解決策 1:
私は通常、 -exec
を使用してそれを見つけます find
のオプション より簡単で混乱を避けるために。これを試してください:
find . -name vmware-*.log -exec rm -i {} \;
-exec
以降のすべて ;
まで、各結果に対して実行するコマンドと見なされます find
に渡されるように、ここでエスケープされます . {}
find
というファイル名に置き換えられます 通常は印刷されます。
目的の動作を確認したら、 -i
を削除できます .
解決策 2:
GNU find
がある場合 -delete
を使用できます オプション:
find . -name "vmware-*.log" -delete
xargs
を使用するには ファイル名のスペースの問題を回避します:
find . -name vmware-*.log -print0 | xargs -0 rm
ただし、ログ ファイルの名前にスペースを含めないでください。ワード プロセッシング ドキュメントと MP3 ファイルにはそれらが含まれている可能性がありますが、ログ ファイルの名前を制御できるはずです。
解決策 3:
find
がわかります 出力リストを NULL と xargs
で区切る 入力リストを同じように受け取るには:
$ ls -l "file 1" "file 2"
-rw-r--r-- 1 james james 0 Oct 19 13:28 file 1
-rw-r--r-- 1 james james 0 Oct 19 13:28 file 2
$ find . -name 'file *' -print0 | xargs -0 ls -l
-rw-r--r-- 1 james james 0 Oct 19 13:28 ./file 1
-rw-r--r-- 1 james james 0 Oct 19 13:28 ./file 2
$ find . -name 'file *' -print0 | xargs -0 rm -v
removed `./file 2'
removed `./file 1'
また、必ず *
をエスケープしてください。 、バックスラッシュを使用するか、 vmware-*.log
を含めることにより そうしないと、シェルが find
に渡す前に展開しようとする可能性があります .
解決策 4:
find の -delete
を忘れないでください オプション。特殊文字でエラーなしでファイルを削除します...