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

    HowToIT
    HowToIT
    Оффлайн
    Воскресенье, Ноябрь 08 2015, 10:25 AM - #Постоянная ссылка
    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
    Нравится
    Этот ответ в настоящее время свёрнут Показать
Ваш ответ

 

 

Scroll to top