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


8

現時点では2つのコマンドを使用していますが、もっと良い方法があるはずです...

wim@wim-acer:~/ffmpeg$ find . -name "*.h" -print0 | xargs -0 grep -i invalid\ preset
wim@wim-acer:~/ffmpeg$ find . -name "*.c" -print0 | xargs -0 grep -i invalid\ preset

1
動作し-name '*.[ch]'ますか?
グレン・ジャックマン、2011

回答:


10

ack(または、Debian / Ubuntuではack-grep)は、バージョン管理やバイナリなどの非ソースファイルを無視します。非常に便利。

上記のように、.cファイルと.hファイルのみを検索するには:

ack-grep -i --cc "invalid preset"

--cc(長いフォームがある--type cc)のみの.c .hの&.xsファイルを調べます。ファイルタイプの完全なリストは、で表示できack-grep --help typeます。ほとんどの場合、--type検索するファイルと、バイナリ、バックアップ、バージョン管理ファイルなどのデフォルトでは表示されないファイルのみが含まれるため、は特に必要ありません。


5

grepプログラム自体は、再帰的に検索し、また、特定のファイルのみを検索するオプションを受け入れすることができます。以下は、2つのfindコマンドに相当します。

grep -Ri --include=*.[ch] invalid\ preset .

これは、ブラケットを削除したときに機能しました
マイク

1

findコマンドはgrep自体を呼び出すことができます。

find . \( -name "*.c" -o -name "*.h" \) -exec grep -i "invalid preset" {} \; -print

およびそのバリエーション。


明らかなバリエーションに変更しました。;-)
キース、

0

このようなものをあなたに追加できます ~/.bashrc

alias cppgrep='grep -Ri "--include=*.[hc]" "--include=*.cpp" "--include=*.hpp"'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.