Как выполнить & ldquo; grep & rdquo; только в папке, в которой вы находитесь

Так скажите, что я в / home / folder1, который содержит много файлов .txt. Если я хочу использовать grep -r "xxx" ___, как я могу сделать ___ означающим, что я хочу, чтобы grep командовал поиском в папке, в которой я находился?

1
задан 21 February 2018 в 22:29

4 ответа

Как насчет использования ./? Это явно означает «эту папку».

grep 'xxx' ./*

Это сканирует все файлы в этой папке для всех вхождений xxx внутри каждого файла.

И, конечно, если вы хотите, чтобы все файлы в подкаталогах текущего каталога также были отсканированы, используйте:

grep -r 'xxx' ./*

И на самом деле, если вы уже находитесь в каталог по вашему выбору (используйте ls и pwd -P, чтобы убедиться), то это действительно избыточно использовать ./. Таким образом, это также должно работать одинаково и дать вам тот же результат:

grep -r 'xxx' *
0
ответ дан 17 July 2018 в 20:17

Удалите флаг -r (рекурсивный) и вместо этого используйте glob оболочки для файлов, которые вы хотите найти:

grep 'xxx' *.txt
3
ответ дан 17 July 2018 в 20:17

Как насчет использования ./? Это явно означает «эту папку».

grep 'xxx' ./*

Это сканирует все файлы в этой папке для всех вхождений xxx внутри каждого файла.

И, конечно, если вы хотите, чтобы все файлы в подкаталогах текущего каталога также были отсканированы, используйте:

grep -r 'xxx' ./*

И на самом деле, если вы уже находитесь в каталог по вашему выбору (используйте ls и pwd -P, чтобы убедиться), то это действительно избыточно использовать ./. Таким образом, это также должно работать одинаково и дать вам тот же результат:

grep -r 'xxx' *
0
ответ дан 23 July 2018 в 20:59
  • 1
    Упоминание текущего каталога явно (./) не должно иметь никакого значения в этом случае. – Melebius 22 February 2018 в 18:45
  • 2
    @benett Melebius означает, что между * и ./* нет никакой разницы. – wjandrea 23 February 2018 в 08:05

Удалите флаг -r (рекурсивный) и вместо этого используйте glob оболочки для файлов, которые вы хотите найти:

grep 'xxx' *.txt
3
ответ дан 23 July 2018 в 20:59
  • 1
    Чтобы уточнить, я действительно должен проверить, есть ли «xxx». находится внутри одного из файлов. Будет ли эта команда работать EDIT: я проверил, не все файлы .txt, должен ли я просто сделать * – DrBracewell 21 February 2018 в 22:36
  • 2
    @DrBracewell Используйте glob, который включает все файлы, которые вы хотите искать. Например, для поиска всех файлов .txt и .ini используйте grep 'xxx' *.txt *.ini. Для получения дополнительной информации о globbing прочитайте эту ссылку и связанные ссылки: Что такое подглаживание файлов? – wjandrea 21 February 2018 в 23:11

Другие вопросы по тегам:

Похожие вопросы: