特定のパターンに一致するすべてのファイルを削除する bash コマンドを作成しようとしています。この場合、構築された古い vmware ログ ファイルがすべて削除されます。
私はこのコマンドを試しました:
find . -name vmware-*.log | xargs rm
ただし、コマンドを実行すると、名前にスペースが含まれるすべてのフォルダーで詰まります。xargs が引用符付きまたは適切にエスケープされた rm に渡すようにファイルパスをフォーマットする方法はありますか?
使用してみてください:
find . -name vmware-*.log -print0 | xargs -0 rm
これにより、find は各ファイル名の後にヌル文字を出力し、空白やその他のトークンではなくヌル文字に基づいて名前を分割するよう xargs に指示します。
xargs を使用しないでください。検索は何の助けもなしにそれを行うことができます:
find . -name "vmware-*.log" -exec rm '{}' \;
-0
のフラグを確認してくださいxargs
。と組み合わせて設定する必要がありますfind
。-print0
find . -name vmware-*.log -print0 | xargs -0 rm
GNU 検索
find . -name vmware-*.log -delete
find . -name vmware-*.log | xargs -i rm -rf {}
xargs でのスペースの問題を回避するために、 -d オプションで改行文字を区切り文字として使用します。
find . -name vmware-*.log | xargs -d '\n' rm
find -iname pattern
-iname
パターン検索に使用