grep -r "register_long_arrays" *
рекурсивно найдет все случаи register_long_arrays
в Вашем текущем каталоге.
Если Вы хотите объединиться find
с grep
ограничить типы файлов искало, необходимо использовать его как это (этот пример ограничит поиск окончанием файлов .txt
):
find . -name '*.txt' -exec grep "register_long_arrays" {} \;
{}
заменяется каждым файлом это find
находит без Вас имеющий необходимость волноваться о выходе из проблемных символов как пробелы. Отметьте обратную косую черту перед точкой с запятой. Это гарантирует, что точки с запятой оставляют и передают исполнительному пункту (grep) вместо того, чтобы завершить команду находки.
Если Вы все еще не находите то, что Вы хотите это, может быть проблема случая, (предоставьте -i
отметьте к grep для игнорирования регистра), или возможно содержание, которое Вы хотите, находится в скрытом файле (запускающийся с .
), который *
не будет соответствовать, в этом случае предоставлять обоих *
и .*
как аргументы grep.
find . -type f -exec grep my_phrase {} \;
будет работать для поиска всех регулярных файлов, но это вызывает grep
однажды для каждого файла. Это неэффективно и сделает поисковое взятие заметно дольше на медленных компьютерах и/или больших иерархиях каталогов. По этой причине лучше использовать xargs
:
find . -type f | xargs grep my_phrase
или, если у Вас есть файлы, имена которых содержат пробелы,
find . -type f -print0 | xargs -0 grep my_phrase
Еще более простой должен просто использовать -r
опция к grep
:
grep -r my_phrase .
Отметьте использование. вместо * как аргумент имени файла. Это избегает проблемы расширения * не включая скрытые файлы.
попытка:
find . -name ./\* | xargs grep my_phrase
xargs
назовет grep с на каждом из файлов это find
находит.
Можно также попробовать ack. Это быстро. Если Вы работаете с деревьями кода, это - большой инструмент.
Поиск foobar в содержании файла рекурсивно из текущего каталога:
ack foobar
Поиск регистрирует, который называет соответствие regexp:
ack -g "foo(bar)?"
find . -exec grep my_phrase {} \;
find
генерирует список всех файлов в или ниже текущего каталога. exec
выполнит команду grep my_phrase
для каждого найденного файла. \;
является просто волшебным, чтобы заставить его работать. Детали того, как это работает, могут обычно замечаться с man find
.
Вы могли бы также хотеть посмотреть на -H
опция grep
если Вы хотите знать не только, если это было найдено, но и где.