"-exec rm{}\;"そして「-delete」を探します。

これら2つのコマンドの違いを理解しようとしています。

find / -name .DS_Store -delete

そして

find / -name ".DS_Store" -exec rm {} \;

-exec ... {}この方法が好ましいことがわかりました。なぜ?どちらがより安全で/速く/より良いですか?私は両方とも書いた。MacBookすべてがうまくいくようです。

ベストアンサー1

-delete一致するファイルごとに外部プロセスを作成する必要がないため、パフォーマンスは良いですが、確実にするこのオプションを呼び出す後ろにフィルタ基準(たとえば-name-cminなど-type)。それ以外の場合は、指定されたファイルツリー全体が削除されます。実際にfindマンページを引用すると、次のようになります。

GNU findは、結果がわかるまで、与えられた式を左から右に評価し、優先順位ルール(演算子のセクションを参照)に従って、与えられた各開始点にルートを持つディレクトリツリーを検索します。

例えば、

find . -name .DS_Store -type f -delete

大丈夫でしょう。

すべてのバージョンに存在するわけではない-exec rm {} +ので、推奨事項をよく見ることができます。今は確認できませんが、なしで使ったことは確かです。-deletefindfind

どちらの方法も「安全」でなければなりません。

一致するファイルごとに外部プロセスを作成するオーバーヘッドを防ぐ一般的な方法は次のとおりです。

find / -name .DS_Store -print0 | xargs -0 rm

(しかし、ここでも移植性の問題があることに注意してください。findのすべてのバージョンに移植性があるわけではありません-print0!)

おすすめ記事