目前我正在使用两个命令,我相信一定有更好的方法......
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"'