4

こんにちは。ディスクの1つに「@eaDir」という名前のフォルダがたくさんあります。検索してすべてを見つけ、それらとその内容を削除したいと思います。

これはおそらくfindコマンドとrmコマンドの組み合わせであることは知っていますが、それらを完全に理解することはできません。誰か助けてもらえますか?

4

3 に答える 3

4

これを試して:

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
于 2012-12-25T23:47:21.900 に答える
1
find /path/to/the/disk -type d -name "@eaDir" -delete

ここでの順序は基本的なものであることに注意してください。マンページを引用し、

警告:findコマンドラインは式として評価されることを忘れないでください。そのため、最初に-deleteを指定すると、findは指定した開始点より下のすべてを削除しようとします。

したがって、いつものように、最初にコマンドをで試してから、すべてが正常に機能することを確認したら、findコマンドを-printに置き換えます-delete-deleteを意味することに注意して-depthください。したがって、で意味のあるテストを行う-printには、式で明示的に指定する必要があります。

後で-deleteとともに使用する予定のfindコマンドラインをテストするときは、後で予期しない事態を避けるために、-depthを明示的に指定する必要があります。

于 2012-12-25T23:47:43.973 に答える
0

ルート フォルダーまたはディレクトリに移動し、次のコマンドを実行します。

find . -path '*/@eaDir/*' -delete -print && find . -path '*/@eaDir' -delete -print

これはうまくいくはずです。

于 2016-06-14T19:06:12.400 に答える