特定のファイルタイプの特定のテキストをどのように検索しますか?[複製]


13

重複の可能性:
一部のテキストのソースファイルをgrepするにはどうすればよいですか?

現在のディレクトリの下で、特定のファイルタイプの特定のテキストを再帰的に検索するコマンドは何ですか?


何を返したいですか?テキストが入っている行?テキストが入っているファイルの名前は?
MaQleod

@MaQleod:可能であれば、それは良いことです(ファイル名+行番号+スニペット)。
フィリップ

@slhck:ack-grepはインストールされていません。インストールする権限がありません。
フィリップ

1
あなたが必要としないだろうack-grep、あなたは(ちょうど私が言ったように)開始として問題の例、すなわちfind | xargs | grep行を使用することができます。特定の出力についてman grepは、常に読むと便利です。
-slhck

@slhck:ありがとうgrep -r --include=*.<type> "<string>" .。残念ながら、マニュアルページは末尾のドットに言及するのはそれほど簡単ではありません。
フィリップ

回答:


11
find . -type f -name '*.extension' | xargs grep "string"

このコマンドを実行するには、見つける *。拡張子は、その後、実行されるパターンに一致する名前を持つすべてのファイルのローカルディレクトリ(。)にはgrepの結果の「文字列」を検索findは本質的に再帰的であることに注意してください。必要なファイルと名前に基づいていないファイルを区別できる限り、これはうまくいくはずです。


2
これはスペースを含むファイル名で壊れますprint0。より安全にするためにオプションを使用する必要があります。
-slhck

唯一のfind -print0助けを借り、また、使用しませんxargs -0find . -type f -name "*.ext" -print0 | xargs -0 grep "string"
BurninLeo

0

ファイル名、指定したファイルの行番号、およびテキストが表示される行を一覧表示するには:

for x in *.xxx; do [ -r $x ] | cat $x | grep -n TEXT | xargs printf "$x:%s\n";done

現在のディレクトリでのみ実行されますが、適切にフォーマットされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.