1

Возможный дубликат:
Поиск текстового шаблона в Linux
Bash: есть ли способ поиска определенной строки в каталоге файлов?

Допустим, я нахожусь в определенном каталоге, который содержит кучу файлов, и я пытаюсь найти файлы, которые содержат строку "строка" в их содержимом. Есть ли способ сделать это? Благодарю.

2 ответа2

5

Простой ответ:

grep -l string *

Перечислит все файлы в вашем текущем каталоге, которые содержат строковую строку.

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

grep -rl string .

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

find . -type f -maxdepth 1 -exec grep -i string {} /dev/null \;

Если вы хотите просмотреть текущую папку и подпапки, оставьте -maxdepth 1 как:

find . -type f -exec grep -i string {} /dev/null \;

{} означает имя файла, которому оно соответствует, но чтобы указать ИМЯ файла, вы должны добавить как минимум два имени файла, и упоминание /dev /null помогает. Вы можете изменить это как хотите для желаемого результата. Должен дать вам основу для работы. :)

1

Вот несколько способов сделать это в текущем каталоге и во всех его подкаталогах.

Если вам нужны имена файлов, в которых этот текст можно найти:

find . -type f -exec grep -l 'string' {} \; 

Если вы хотите видеть только строки, где был найден текст:

find . -type f -exec grep 'string' {} \; 

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

find . -type f -print -exec grep 'string' {} \;

Конечно, это может быть объединено еще дальше ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .