используя команду find для поиска всех файлов, имеющих какой-либо текстовый шаблон - PullRequest
5 голосов
/ 07 апреля 2009

Я использую следующую команду find, чтобы найти и показать все файлы, имеющие шаблон ввода текста.

найти. -type f -print | xargs grep -n "pattern"

У меня есть много папок проекта, каждая из которых имеет свой собственный make-файл с именем 'Makefile'. (Без расширения файла, просто 'Makefile') *

Как использовать указанную выше команду для поиска определенного шаблона только в файлах с именем Makefile, которые присутствуют во всех папках моего проекта?

-AD.

Ответы [ 7 ]

7 голосов
/ 07 апреля 2009

-print не требуется (по крайней мере, согласно реализации GNU find). -name аргумент позволяет указать шаблон имени файла. Следовательно, команда будет:

find . -name Makefile | xargs grep pattern

2 голосов
/ 07 апреля 2009

Если в путях к каталогам есть пробелы или нечетные символы, вам необходимо использовать метод с нулевым символом в конце:

 find . -name Makefile -print0 | xargs -0 grep pattern
1 голос
/ 17 марта 2016

grep -R "строка" / путь

Пожалуйста, найдите эту ссылку http://rulariteducation.blogspot.in/2016/03/how-to-check-particluar-string-in-linux.html

1 голос
/ 07 апреля 2009

Вы можете избежать использования xargs, используя -exec:

find . -type f -name 'Makefile' -exec egrep -Hn "pattern" {} \;

-H на egrep для вывода полного пути к соответствующим файлам.

1 голос
/ 07 апреля 2009
find . -type f -name 'Makefile' | xargs egrep -n "pattern"

используйте egrep, если у вас очень длинные пути

Дубликат: это

0 голосов
/ 23 января 2014

Поиск больших файлов, занимающих большое дисковое пространство

нам нужно объединить несколько команд.

find . -type f | xargs du -sk | sort -n | tail;
0 голосов
/ 08 октября 2009

вы можете использовать команду ff, т.е. ff -p .format. Например, ff -p * .txt

...