我怎样才能在源文件中查找一些文本?

我怎样才能在源文件中查找一些文本?

目前我正在使用两个命令,我相信一定有更好的方法......

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

确认(或者,在 Debian/Ubuntu 上,ack-grep)将忽略非源文件,如版本控制或二进制文件。非常有用。

仅搜索 .c 和 .h 文件,如上所述:

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

--cc(较长的形式是--type cc)仅查看 .c .h 和 .xs 文件。可以使用 查看文件类型的完整列表。ack-grep --help type大多数时候,您不会特别需要--type,因为它通常只包含要搜索的文件,然后是默认情况下您不会看到的文件,例如二进制文件、备份和版本控制文件。

答案2

grep程序本身可以递归搜索,也可以接受仅搜索某些文件的选项。以下内容相当于您的两个find命令。

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

答案3

find 命令可以调用 grep 本身。

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

及其变体。

答案4

我可以将类似的东西添加到你的~/.bashrc

alias cppgrep='grep -Ri "--include=*.[hc]" "--include=*.cpp" "--include=*.hpp"'

相关内容