【Linux】xxx日より前に編集された特定拡張子のファイルを検索/削除する

やりたいこと

サーバ容量が逼迫してきたので、何日より前に生成/編集された特定の拡張子のファイルをまとめて検索/削除したい。

手順

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 {} \;

コメントを残す

メールアドレスが公開されることはありません。