人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SSHから接続して指定したフォルダの中に含まれる
特定の文字列が入ったファイルだけ一括で削除するコマンドを教えてください。

boxというフォルダの中に約12万のファイルがあります。
このフォルダの容量は約460MBです。
この12万のファイルのうち約10万のファイルの本文に 0,0, という文字列が含まれています。
これら10万の不要なファイルを削除するために
本文に0,0,と含まれるファイルを一括削除するように命令を出したいのですが
特定の文字列が含まれたファイルのみ削除するコマンドはありますでしょうか?

よろしくお願い致します。

●質問者: happy778
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:BOX SSH コマンド ファイル フォルダ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● zzz_1980
●35ポイント

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,が含まれるファイルを一括削除。

ご存知でしたらご教授頂けると幸いです。


2 ● b-wind
●35ポイント
$ grep -r 0,0 -l box | xargs rm -f

Manpage of GREP

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ