やりたいこと
サーバ容量が逼迫してきたので、何日より前に生成/編集された特定の拡張子のファイルをまとめて検索/削除したい。
手順
findコマンドにオプションを追加して実行する。
検索
$ find {検索対象ディレクトリ} -name "*.{拡張子}" -mtime +{x日より前} -ls
-name
検索するファイル名を指定するオプション。
ワイルドカード * を使用することで、特定の拡張子のみに検索を絞ることができる。
-mtime
最終更新日を検索条件に追加するオプション。
プラスを指定することで、その日より前に作られたファイルが検索の対象となる。
マイナスを指定すると、その日から現在までのファイルが検索対象となる。
-ls
検索したファイルに対してls -dils と同等の結果を出力できるオプション。
実行例
1日より前に作られたjpgを検索し、ファイルの詳細を表示する。
$ find ./ -name "*.jpg" -mtime +1 -ls 128256484 328 -rw-r--r-- 1 hoge fuga 276525 Dec 23 09:18 ./www/abc.jpg 128256485 329 -rw-r--r-- 1 hoge fuga 281590 Dec 23 11:19 ./www/foo.jpg
削除
$ find {検索対象ディレクトリ} -name "*.{拡張子}" -mtime +{x日より前} -exec rm -f {} +
-exec
検索した結果のファイルに対してコマンドを実行できる。
{}は検索したファイルのパスを配置する場所となる。
+ は検索結果のファイルパスを半角スペース区切りで列挙する記法。
rmコマンドにファイルパスを全て渡し、一度に実行するため、処理は早い。
実行例
1日より前に作られたjpgを検索し、ファイルを削除する。
$ find ./ -name "*.jpg" -mtime +1 -exec rm -f {} \;