Почему мой скрипт не находит ничего (find. -Name script.sh | grep watermelon) - PullRequest
0 голосов
/ 25 марта 2010

У меня есть скрипт, который я запускаю из домашнего каталога для поиска всех файлов с именем «script.sh», которые содержат строку «арбуз». Ничего не нашел, но я четко вижу эти скрипты в подкаталогах. Может кто-нибудь предложить изменение команды, которую я использую:

find . -name script.sh | grep watermelon

Ответы [ 3 ]

2 голосов
/ 25 марта 2010

find возвращает имя файла, которое находит по умолчанию.Если вы хотите, чтобы он выполнял поиск в файлах, вам нужно передать его по номеру xargs или использовать предикаты -exec и -print:

find . -name script.sh -exec grep -q watermelon {} \; -print
1 голос
/ 25 марта 2010

используйте -type f для указания файла

find . -type f -name "script.sh" -exec grep "watermelon" "{}" +;

или если у вас есть bash 4

shopt -s globstar
grep -Rl "watermelon" **/script.sh
1 голос
/ 25 марта 2010

Вам нужно использовать xargs:

find . -name script.sh | xargs grep watermelon

xargs изменяет поведение для поиска в файлах, а не только для поиска по именам файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...