find コマンドの問題 - デフォルトのディレクトリを一覧表示せずにディレクトリの下のサブディレクトリとファイルを一覧表示する方法

find コマンドの問題 - デフォルトのディレクトリを一覧表示せずにディレクトリの下のサブディレクトリとファイルを一覧表示する方法

検索コマンド - 引数として渡されたデフォルトディレクトリを一覧表示せずに、ディレクトリの下にあるサブディレクトリとファイルのみを一覧表示する方法。

例:

find /abc/def/ghi -mtime +10 

上記のコマンド出力の結果には、デフォルトディレクトリがその中にあるサブディレクトリとファイルとともに一覧表示されます。

/abc/def/ghi 
/abc/def/ghi/fff
/abc/def/ghi/abc.txt

出力が以下のようになります。

/abc/def/ghi/fff
/abc/def/ghi/abc.txt

この問題の原因は、findコマンド出力がディレクトリとファイルを繰り返し削除するために使用されるためです。したがって、デフォルトのディレクトリが/abc/def/ghi10日間使用されない場合、そのディレクトリも一覧表示され、最終的に削除されます。

find /abc/def/ghi -mtime +10 -exec rm -rf {} \;

ベストアンサー1

しきい値より古いファイルを見つけて、空のディレクトリを削除します。

この$base変数は4回(1文あたり2回)使用されます。これにより、私たちは自己-path "$base/*"削除を防ぐことができます。つまり、最上位または 。$base*...

base=/abc/def
find "$base/" -path "$base/*" -type f -mtime +10 -exec rm -f {} +
find "$base/" -depth -path "$base/*" -type d -exec rmdir {} + 2>/dev/null

おすすめ記事