grepのマニュアルページには次のように記載されています。
"grep -lZ outputs a zero byte after each file name instead of the usual newline"
しかし、私の場合、出力の一部のファイルにはまだ引用符が必要です。動作させるには:
/usr/bin/grep -rlZ 'Not Found'|xargs -0 rm
-w
ファイル名の-webkit-stuff.html
rm のオプションとして解釈されるべきではありません。だから私は現在これをやっています:
/usr/bin/grep -rlZ 'Not Found'|\
xargs -0 -I{} find . -type f -name {} -print0 | xargs -0 rm
これはあまり効率的ではありません。-print0
grepの「より良い」バージョンはありますか?
あなたは何をしますか?
ベストアンサー1
使用できる
/usr/bin/grep -rlZ 'Not Found' | xargs -0 -r rm --
--
ユーティリティが何もオプションとして解釈できないようにする場合
/usr/bin/grep -rlZ 'Not Found' . | xargs -0 -r rm
これにより、grep
すべてのファイルのパス名に接頭辞が付けられます./
。-r
xargs
xargs
いいえ入力が受信されない場合grep
(つまり、文字列を含むファイルがない場合)は、コマンドが実行されます。
個人的には以下を使用できますfind
。
find . -type f -exec grep -qF 'Not found' {} ';' -delete
(同じことをしていると思います。文字列を含むファイルを再帰的に削除しますNot found
。)