Debian.pro/

Про Debian


Рекурсивный поиск фразы по всем текстовым файлам в каталоге

Если вкратце, то:

user@host:~$ grep -Rni word /directory

Теперь подробнее. Что такое grep, вы, скорее всего, уже знаете. Эта утилита используется как фильтр вывода текстовой информации в консоли.

  • -R — grep обойдёт каталог рекурсивно (проходя по симлинкам, если симлинки не нужны — то -r)
  • -n — grep выведет номер строки в результатах
  • -i — case insensetive поиск (т.е. не учитывается регистр букв).
  • word — указываем слово, которое ищем
  • /directory — указываем директорию. Например /home/$user/docs

Несколько примеров.

user@host:~$ grep -rn word /home/inky/docs/
/home/inky/docs/doc1.txt:11:some word here

В 11й строке файла /home/inky/docs/doc1.txt содержится слово word (после 11: выводится сама строка)

user@host:~$ grep -Rni "few words" /home/inky/docs/
/home/inky/docs/doc1.txt:19:few words here

В 19й строке файла нашлось словосочетание few words.

Ну и пример с egrep:

user@host:~$ grep -Rni -E '(word1|word2|word3)' /home/inky/docs/
/home/inky/docs/doc1.txt:20:word1
/home/inky/docs/doc1.txt:21:word2
/home/inky/docs/doc1.txt:22:word3

Мы искали word1 или word2 или word3. В 20й строчке нашлось word1, в 21й — word2, в 22й — word3.

Использую я это в основном для поиска iframe на хостинг-серверах. Иногда полезно также найти что-либо в каталогах с большим количеством конфигурационных файлов.
Enjoy =)


Комментарии (15):

  1. Pipe :

    Отлично расписано, то что искал… СПС

  2. Полезная информация для тех у кого unix хостинг, очень помогло при поиске копирайтов в шаблонах.

  3. Ziggy :

    Спасибо автору! Помогло найти одну настройку, которую вручную уже замучился искать. А тут одна команда и проблема решена =)

  4. Sake :

    Спасибо большое, очень полезно все описано

  5. grep -R config /etc/ #найдет все где есть кусок config(например fontconfig,configure)
    grep -Rw config /etc/ #найдет все где есть только config
    grep -Rwh config /etc/ #выведет найденные результаты без вывода файлов, в которых они найдены
    grep -Rwl #только файлы , в которых есть совпадения

  6. Alex :

    шел 2020й.
    мы по-прежнему читаем твой бложек.
    пасиб те.

  7. Да не за что, заходите)

  8. Alex :

    Канеш зайдем!!!
    Жаль, кое-кто пессимиздит иногда, и перестал сюда писать)

  9. День добрый. А как скопировать найденные файлы?

  10. Что-то в районе for i in `find … | awk -F «:» ‘{print $1}’`; do cp $i /somewhere/ ; done можно попробовать, например.

  11. Виятий :

    Я так сделал:
    find /home/vmail/vp/cur/ -type f -exec grep -HiIl «To: office@vp.com» {} \; | xargs -n 1 -I % cp -v —parents «%» /home/OFFICE/

  12. Ну тоже вариант )

  13. Олег :

    Как искать не строчки, то что находится между ними?

  14. inkvizitor68sl :

    Регулярками перловыми для грепа, думаю

  15. А как искать все то же самое только в txt и log файлах?

Написать комментарий