1. ホーム
  2. bash

[解決済み] n日以上前のディレクトリを削除するシェルスクリプト

2022-05-03 15:33:57

質問

という名前のディレクトリがあります。

2012-12-12
2012-10-12
2012-08-08

bashシェルスクリプトで10日以上前のディレクトリを削除するにはどうすればよいでしょうか?

どのように解決するのですか?

これは、あなたのために再帰的にそれを行います。

find /path/to/base/dir/* -type d -ctime +10 -exec rm -rf {} \;

説明する。

  • find ファイル/ディレクトリ/リンクなどを検索するためのUNIXコマンドです。
  • /path/to/base/dir : 検索を開始するディレクトリを指定します。
  • -type d : ディレクトリのみ検索
  • -ctime +10 : 変更時間が10日以上古いものだけを考慮する
  • -exec ... \; : そのような結果が見つかるたびに、次のコマンドを ...
  • rm -rf {} : 再帰的にディレクトリを強制削除します。 {} の部分は、前の部分から検索結果が代入されるところです。

または、使用してください。

find /path/to/base/dir/* -type d -ctime +10 | xargs rm -rf

という量になるので、もう少し効率的です。

rm -rf dir1 dir2 dir3 ...

とは対照的です。

rm -rf dir1; rm -rf dir2; rm -rf dir3; ...

のように -exec メソッドを使用します。


最近のバージョンでは find に置き換えることができます。 ;+ と同等のことをするようになります。 xargs を呼び出し、各execシステムコールで収まるだけのファイルを渡します。

find . -type d -ctime +10 -exec rm -rf {} +