Поиск Minix grep с определенными расширениями

Для школы мне нужно выполнить задание, в котором мне нужно использовать команду grep в minix для поиска в исходном дереве файлов, содержащих «int main (». Поскольку исходное дерево хранится в /usr/src, у меня есть следующая команда:

 grep -rn --include=\*.c /usr/src/  "int main("

Проблема в том, что я не могу получить команду для поиска только в .c файлах. Итак, вопрос: как мне искать, используя grep, любые файлы, содержащие "int main(", при поиске только в .c файлах?

Любая помощь очень ценится.


person Wouter Pol    schedule 12.02.2015    source источник


Ответы (1)


I think this following will work:

grep "int main(" $(find /usr/src|grep .c)

Это возьмет все файлы в /usr/src и увидит, какие из них имеют строку «.c» в именах файлов, а затем найдет какую-то строку в каждом из этих файлов. grep с $( не будет заглядывать внутрь этих файлов, потому что он ищет любую строку в стандартном вводе, которую он получает через конвейер.

РЕДАКТИРОВАТЬ:

Это может не сработать, в зависимости от уровня мощности ваших компьютеров. На моем ноутбуке он возвращает «zsh: слишком длинный список аргументов: grep». Но принцип должен работать.

РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ:

If you want to search (for example) also in, say, .h files, you could use the following:

grep "int main(" $(find /usr/src|grep .c|grep .h)

person Accidental brine    schedule 12.02.2015
comment
На моей виртуальной машине работает отлично, большое спасибо! - person Wouter Pol; 14.02.2015