8

На данный момент я использую две команды, я уверен, что должен быть лучший способ ...

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

4 ответа4

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 , так как обычно в нем будут только файлы для поиска, а затем файлы, которые вы не увидите по умолчанию, например, двоичные файлы, резервные копии и файлы контроля версий.

4

Сама программа grep может выполнять рекурсивный поиск, а также принимает опцию поиска только определенных файлов. Следующее эквивалентно вашим двум командам 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"'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .