0
Собственно сабж. Необходимо найти все файлы, содержащие определенную текстовую строку (не по имени файла, а по содержимому!). Зарнее благодарен за подсказку!

Ответы (1)
-
Ответ принят
2Используйте команду grep.
Например:
grep -rnw '/путь/где/ищем/' -e "строка, которую ищем"
Ключ -r (или -R) означает рекурсивный поиск (т.е. во всех подкаталогах), ключ -n выводит в результатах номер строки, на которой было найден искомый текст, а -w означает, что искать надо слово целиком.
Также вы можете, например, добавить ключ -l, чтобы в результатах отображалось только имя файла.
Полезными могут быть ключи --exclude и --include, которые позволят исключить какие-то файлы из поиска или, наоборот, искать только в определенных файлах. Например:
grep --include=\*.{txt,conf} -rnw '/путь/где/ищем/' -e "строка, которую ищем"
В данном случае поиск будет выполнятся только в файлах с расширением .txt и .conf.
Похожим образом используется и ключ --exclude:
grep --exclude=*.o -rnw '/путь/где/ищем/' -e "строка, которую ищем"
Поиск будет производится во всех файлах, кроме тех, которые имеют расширение .o
Также возможно выполнять поиск с исключая/указывая папки, используя ключи --exclude-dir и --include-dir. Например, вот так можно использовать ключ --exclude-dir:
grep --exclude-dir={dir1,dir2,*.dst} -rnw '/путь/где/ищем/' -e "строка, которую ищем"
Поиск будет выполнен во всех папках кроме папок dir1 и dir2, а также в папках, чье название оканчивается на *.dst.
Вообще, команда grep очень функциональна. Посмотреть все ключи и их описание можно выполнив:
man grep
Ваш ответ

Чтобы оставить ответ, необходимо зарегистрироваться
Вы должны быть зарегистрированы, чтобы иметь возможность оставить ответ. Водите, используя форму входа или зарегистрируйтесь, если вы впервые на сайте.
Зарегистрируйтесь здесь »RSS лента
Быстрый вход