Как мне найти все файлы, содержащие указанный c текст в Linux, но не в подкаталогах? - PullRequest
0 голосов
/ 14 июля 2020

Удивительно, но я не смог найти ответ без подкаталогов. ie Думаю, без опции -R. Я искал поиск текста в каталоге, но избегал поиска в подкаталогах. Исходное сообщение

Пробовал

grep -nl 'text' /search/path/

Но я получаю сообщение об ошибке:

'search/path/ Is a directory`

Тогда как если я попробую:

grep -rnl 'text' /search/path/` --exclude-dir *

Поиск по подкаталогам продолжается.

1 Ответ

0 голосов
/ 14 июля 2020

Вы можете использовать:

grep 'text' /search/path/*
#                        ^

* будет расширяться до всех элементов в каталоге, а отсутствие -R не позволит углубиться в подкаталоги.

Недостатком этого подхода является то, что он исключает скрытые файлы, поскольку .files не расширяется только с помощью *. Если вы также хотите их использовать с помощью grep, вы можете использовать:

grep 'text' /search/path/{*,.*}
#                        \____/

Таким образом вы получите все элементы, соответствующие * и .*, что является всем.

Наконец, если вы не хотите получать сообщение об ошибке:

search / path / Это каталог

Вы можете перенаправить его в / dev / null следующим образом:

grep 'text' /search/path/{*,.*} 2>/dev/null
#                               \_________/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...