こんにちは。ディスクの1つに「@eaDir」という名前のフォルダがたくさんあります。検索してすべてを見つけ、それらとその内容を削除したいと思います。
これはおそらくfindコマンドとrmコマンドの組み合わせであることは知っていますが、それらを完全に理解することはできません。誰か助けてもらえますか?
これを試して:
find . -type d -name '@eaDir' -print0 | xargs -rt0 rm -rv
これは同じことですが、明示的な長いオプションを使用していますxargs
。
find . -type d -name '@eaDir' -print0 | xargs --no-run-if-empty --verbose --null rm -rv
(他の人が保守/レビューする必要のあるスクリプトを作成している場合は、長いオプションを使用することをお勧めします)
しかし、何よりもまず:
man find
man xargs
find /path/to/the/disk -type d -name "@eaDir" -delete
ここでの順序は基本的なものであることに注意してください。マンページを引用し、
警告:findコマンドラインは式として評価されることを忘れないでください。そのため、最初に-deleteを指定すると、findは指定した開始点より下のすべてを削除しようとします。
したがって、いつものように、最初にコマンドをで試してから、すべてが正常に機能することを確認したら、find
コマンドを-print
に置き換えます-delete
。-delete
を意味することに注意して-depth
ください。したがって、で意味のあるテストを行う-print
には、式で明示的に指定する必要があります。
後で-deleteとともに使用する予定のfindコマンドラインをテストするときは、後で予期しない事態を避けるために、-depthを明示的に指定する必要があります。
ルート フォルダーまたはディレクトリに移動し、次のコマンドを実行します。
find . -path '*/@eaDir/*' -delete -print && find . -path '*/@eaDir' -delete -print
これはうまくいくはずです。