11

特定のパターンに一致するすべてのファイルを削除する bash コマンドを作成しようとしています。この場合、構築された古い vmware ログ ファイルがすべて削除されます。

私はこのコマンドを試しました:

find . -name vmware-*.log | xargs rm

ただし、コマンドを実行すると、名前にスペースが含まれるすべてのフォルダーで詰まります。xargs が引用符付きまたは適切にエスケープされた rm に渡すようにファイルパスをフォーマットする方法はありますか?

4

7 に答える 7

23

使用してみてください:

find . -name vmware-*.log -print0 | xargs -0 rm

これにより、find は各ファイル名の後にヌル文字を出力し、空白やその他のトークンではなくヌル文字に基づいて名前を分割するよう xargs に指示します。

于 2009-10-19T18:31:47.537 に答える
9

xargs を使用しないでください。検索は何の助けもなしにそれを行うことができます:

find . -name "vmware-*.log" -exec rm '{}' \;

于 2009-10-19T18:32:18.967 に答える
5

-0のフラグを確認してくださいxargs。と組み合わせて設定する必要がありますfind-print0

find . -name vmware-*.log -print0 | xargs -0 rm
于 2009-10-19T18:30:32.577 に答える
4

GNU 検索

find . -name vmware-*.log -delete
于 2009-10-20T00:15:55.167 に答える
1

find . -name vmware-*.log | xargs -i rm -rf {}

于 2009-10-20T03:34:00.010 に答える
0

xargs でのスペースの問題を回避するために、 -d オプションで改行文字を区切り文字として使用します。

find . -name vmware-*.log | xargs -d '\n' rm
于 2016-08-03T11:42:44.360 に答える
0
find -iname pattern

-inameパターン検索に使用

于 2011-06-25T13:25:18.707 に答える