2009-04-07 3 views
4

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

найти. -типа е -print | xargs Grep -n «шаблон»

У меня есть много проектов папки, каждая из которых имеет свой собственный Makefile названный как «Makefile» (без расширения файла, просто «Makefile»)

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

-AD.

ответ

6

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

find . -name Makefile | xargs grep pattern

1
find . -type f -name 'Makefile' | xargs egrep -n "pattern" 

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

дубликата: this

1

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

find . -name Makefile -print0 | xargs -0 grep pattern 
1

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

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

-H на egrep, чтобы вывести полный путь к согласующим файлам.

0

Вы можете использовать команду ff i.e ff -p .format. Для например ФФ -p * .txt

0

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

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

find . -type f | xargs du -sk | sort -n | tail; 

 Смежные вопросы

  • Нет связанных вопросов^_^