特定の文字列が入ったファイルだけ一括で削除するコマンドを教えてください。
boxというフォルダの中に約12万のファイルがあります。
このフォルダの容量は約460MBです。
この12万のファイルのうち約10万のファイルの本文に 0,0, という文字列が含まれています。
これら10万の不要なファイルを削除するために
本文に0,0,と含まれるファイルを一括削除するように命令を出したいのですが
特定の文字列が含まれたファイルのみ削除するコマンドはありますでしょうか?
よろしくお願い致します。
10万本もファイルがあると、ファイル名を引数で指定してもパンクしてしまうので、
とりあえず、
% find . -exec grep -l "0,0," {} +
か
% ls|xargs grep -l "0,0,"
で"0,0,"が本文中に含まれたファイルを全部ピックアップしますから、
これに xargs をつないで、
% find . -exec grep -l "0,0," {} +|xargs rm -fr % ls|xargs grep -l "0,0,"|xargs rm -fr
自分だったら12万本のファイルのなかの必要な2万本をどうやってピックアップするか
考えますけどねぇ。いきなり消すのは怖くてできません。
urlはダミーです。
http://q.hatena.ne.jp/1230295709
回答ありがとうございました。
とても参考になりました。
もうひとつ聞きたいことがあるのですが、
指定した日付以前に作成された0,0,が含まれるファイルを一括削除するコマンドはありますでしょうか?
例
2008年12月25日以前に作成された0,0,が含まれるファイルを一括削除。
ご存知でしたらご教授頂けると幸いです。