Web制作メモ -トップへ-

[Linux] 更新日が古いファイルを表示・削除する

Web全般2015.02.14 16:56

古いファイルを削除するにはfindコマンドを使います。

-mtimeオプションで、更新日が指定した日数より前のファイルを検索できます。

-mtimeは少しクセがあり、指定した日数+1日前となるので、削除する前に表示して確認したほうがいいです。

更新日が古いファイルを表示する

以下は、/public/tmp/ディレクトリから、更新日が17日以前のファイルの詳細情報をls -lで表示しています。

-type fはファイルのみを対象とする指定です。

更新日が17日前より古いファイルを表示する

# find /public/tmp/ -type f -mtime +16 -exec ls -l {} \; | sort -k 7,8

出力例

-rw-r--r-- 1 web web 758 Jan 23 18:06 /public/tmp/test1.txt
-rw-r--r-- 1 web web 637 Jan 24 00:45 /public/tmp/test2.txt

検索結果のファイルに対して、-execで任意のコマンドを実行できます。

-execで指定したコマンドの最後は「{} \;」と記述します。

上記では、ls -lでファイルの詳細情報を表示しています。

sort -k 7,8という指定で7,8列目(日付の列と時間の列)をキーで並び替えをしています。

更新日が古いファイルを削除する

ファイルを削除する場合は、-execでrmを指定します。

rmをプログラムから実行する場合、削除していいかの確認は省略する為、-fオプションを指定します。

更新日が17日前より古いファイルを削除する

# find /public/tmp/ -type f -mtime +16 -exec rm -f {} \;

これをcrontabに登録しておけば定期的に古いファイルを削除できます。