LoginSignup
3
4

More than 5 years have passed since last update.

ファイル群から特定の文字が含まれるものを抽出する方法あれこれ

Last updated at Posted at 2015-03-30

「Webサイトの中からXXXって文字消したいんだよね〜」のように、対象のファイル群から、指定した文字列が含まれるものを抽出したいことってよくあると思います。そんな時に参考にしてください。

例:カレントディレクトリ以下で、文字列「しいたけ」が含まれるファイルの一覧をresult.txtに保存する。

$grep -rl 'しいたけ' ./ > ~/result.txt

特定のパターンのファイル群に対して検索する場合は、findを組み合わせる。
例:カレントディレクトリ以下のhtmlファイルに対して、ワード「しいたけ」が含まれる一覧を抽出する。

$find . -type f -name '*.html' -print | xargs grep 'しいたけ' -l

egrepを使えば、複数パターンの同時検索もできるようです。
例:カレントディレクトリ以下のhtmlファイルに対して、ワード「しいたけ」「まいたけ」が両方含まれる一覧を抽出する。

$find . -type f -name '*.html' -print | xargs egrep 'しいたけ|まいたけ' -l

出力フォーマットについては、ファイル名だけ出力したり、対象の行番号を合わせて出力したり、等コマンドのオプションで対応できるので、マニュアルを読むべし。

【追記】find組み合わせなくてもできる旨コメントで教えていただきました。こちらの方がパフォーマンスよさそうですね。 --include--exclude-dirオプションを使えば対象範囲を柔軟に設定できそうですね。

$grep --exclude-dir ".svn" --include "*.html" "しいたけ" -l

@budougumi0617 さんありがとうございます!

3
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4