bash で、特定のファイルを含むディレクトリを検索して削除する方法 (ファイルが X 分以上古い場合のみ)

bash で、特定のファイルを含むディレクトリを検索して削除する方法 (ファイルが X 分以上古い場合のみ)

bash では、ファイルが X 分以上古い場合にのみ、特定のファイルを含むディレクトリを見つけて削除するにはどうすればよいですか。

がある この答え特定のファイルを含むディレクトリを検索します。ただし、ファイルが X 分以上古いという条件を追加する方法が明確ではありません。

答え1

編集: より簡単な方法:

find . -name 'foobar.dat' -mmin +3 -exec bash -c 'rm -vr "$(dirname "$1")"' bash {} \;

基本的には、一致するファイルを見つけて、その親ディレクトリを消去します。2 番目の「bash」文字列は何でもかまいません。これは、ファイル名が「$0」に入力されるのを避けるためです (ただし、これで問題なく動作するようです...)

以前のあまりエレガントではない解決策:

私は別の方法でこの問題に取り組みます:

  • rm -r $(dirname $1)(引数の親ディレクトリを削除するなど)小さなスクリプトを作成します。

  • そのようなファイルをすべて見つけて、それらに対してスクリプトを呼び出します。

    find . -name 'foobar.dat' -mmin +3 -exec rmparent_script {} \;
    

関連情報