Страницы

Поиск по вопросам

четверг, 28 ноября 2019 г.

Как найти все файлы, содержащие искомый текст на linux?

#linux


Хотелось бы найти способ поиска всех файлов, которые содержат заданный текст.
Именно текст внутри файлов, а не в названиях.

Встречается такое решение:

find / -type f -exec grep -H 'текстДляПоиска' {} \;


Однако оно работает достаточно криво, как правильно это сделать?

Перевод "How to find all files containing specific text on Linux?"
    


Ответы

Ответ 1



Делайте так: grep -rnw '/путь/к/папке/с/файлами' -e "шаблон" -r или -R - рекурсивный поиск. -n - вывод номера строки. -w - только целые слова. -l (нижний регистр от L) - вывод имени файла, где было совпадение. Эффективности добавят следующие флаги: --exclude - Шаблон для исключения файлов, например: поиск везде, кроме файлов с расширением .o: grep --exclude=*.o -rnw '/путь/к/папке/с/файлами' -e "шаблон" --include - Поиск только в определённых файлах, например: только в файлах с расширениями .h и .c: grep --include=\*.{c,h} -rnw '/путь/к/папке/с/файлами' -e "шаблон" --exclude-dir и --include-dir - то же, только для выборки директорий, например: исключить папки один, two и любые, начинающиеся на а: grep --exclude-dir={один,two,а*} -rnw '/путь/к/папке/с/файлами' -e "шаблон" Это отлично работает для подобных целей, остальные настройки для grep можно узнать, выполнив man grep, удачи!

Комментариев нет:

Отправить комментарий