文字列を含むすべてのテキストを削除したいですfoo
。
すべてのファイルを一覧表示できますが、オプションのack-grep foo
ようにすべてのファイルを削除する方法が見つかりません。-exec rm {}
find
特定の文字列を含むすべてのファイルを削除する方法は?
答え1
GNUの使用xargs
:
ack -l --print0 foo | xargs -r0 rm --
ack--print0
とxargs'は、-0
ackとxargsが書き込みと読み取りのための区切り文字としてNULを使用することを可能にし、正しいファイル名の処理を保証します。これがなければ、xargs
より広い範囲の文字が区切り文字として許可されます。
答え2
ファイル名のみをリストするgrepとackで-lオプションを使用できます。
grep -l --null foo ./* | xargs -r0 rm
または:
ack -l --print0 foo ./* | xargs -r0 rm --