11 сентября 2016 г.

Как найти текст или файл в Linux используя bash





Для поиска текста используем следующую команду:

grep -rnw 'directory' -e "pattern"

Пример:
$ grep -rnw '/var/www/' -e "DOCTYPE html"

Если выводится слишко много  информации то можно добавить команду “less”
$ grep -rnw '/var/www/' -e "DOCTYPE html" | less

Где:
-r      - рекурсивно
-n     - номер строки
-w    - соответствует целому слову

Наряду с этим, --exclude или --include параметр может быть использован для эффективного поиска. Что-то вроде этого:

grep --include=\*.{c,h} -rnw 'directory' -e "pattern"

В этом случае, поиск будет только  по файлам, которые имеют .c или .h расширения.

Другие примеры:
$ grep --include=\*.{php,html} -rnw '/var/www/' -e "DOCTYPE html"
искать в .php и .html

$ grep --include=\*.html -rnw '/var/www/' -e "DOCTYPE html"       
искать в .html


Аналогично использование команды --exclude:

Образец:
grep --exclude=*.o -rnw 'directory' -e "pattern"
Исключает из поиска все файлы с расширением .o

Кроме этого мы можем работать и с директориями:
grep --exclude-dir={dir1,dir2} -rnw 'directory' -e "pattern"
--exclude-dir   исключить каталог

$ grep --exclude-dir={html,html1} -rnw '/var/www/' -e "DOCTYPE html"

Исключаем каталоги html, html1 и все файлы с расширением .t
$ grep --exclude-dir={html,html1} --exclude=*.t -rnw '/var/www/' -e "DOCTYPE html"

Исключаем каталог html
$ grep --exclude-dir=html -rnw '/var/www/' -e "DOCTYPE html"


Следующая команда find для поиска файлов:

find [directory] -name "Имя файла"

Примеры:
$ find /var/www/html1 -name *.txt

Найти все файлы изображений:
$ find /home/vlad \( \( -name *.[Jj][Pp][Ee][Gg] \) -or \( -name *.[Pp][Nn][Gg] \) -or \( -name *.[Bb][Mm][Pp] \) \)

$ find /var/www/ -type f -name index.php     // -type f - для файлов

$ find /var/www/ -type d -name css              // -type d - для директорий

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

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

Оставить отзыв