UNIX grep - как найти текст в специально названных файлах? - PullRequest
2 голосов
/ 25 февраля 2011

Я хотел бы получить список имен файлов, содержащих слово «горячий» (без разницы в регистре).Файлы также должны находиться в каталоге / test / home с именами файлов , начинающимися с"config".

  1. На данный момент лучшее, что я могу придумать, это следующее.Однако он работает только в каталоге /test/home.

grep -ilrw "hot" * |grep -i config

Другим недостатком этого подхода является невозможность проверки имен файлов, начинающихся с «config».Например, «grep -i ^ config» не будет соответствовать файлам, таким как «/test/home/configurations/config.xml"

Есть ли способ обойти это?

  1. Может кто-нибудь объяснить, почему следующее не работает?

grep -ilrw "hot" config *

Ответы [ 3 ]

4 голосов
/ 25 февраля 2011

Если вы хотите использовать только grep, вы были не за горами.Я бы сделал;

grep -Rli --include='config*' "hot" *

- включить, позволяет указать GLOB для поиска, а последний * позволяет настроить файлы / каталоги, которые будут работать с включаемым глобаломна.

4 голосов
/ 25 февраля 2011
find . -name 'config*' | xargs grep -i "hot"

может немного зависеть от вашего вкуса UNIX, я думаю

0 голосов
/ 25 февраля 2011

Если вы являетесь счастливым пользователем GNU powertools, find может сделать это для вас:

find /test/home -iregex ".*hot.*" -regex "config.*"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...