Поиск файлов в Linux по содержимому
19 Sep 2018 | Автор: dd |В нелегком деле создания собственной сети сателлитов, самое не простое – это найти в нагромождении папок шаблона, нужные строки кода, которые надо изменить, например для удаления ссылок, или изменения названия менюшек.
Ищется это все элементарно, если знать синтаксис команды grep, т.к по началу все хочется банально чекнуть через вырезку из cat строк кода. Но в таком случае, система не укажет в каком из файлов находится данное выражение, т.ч придется гадать что к чему:
# cat */*/* | grep ‘UBER Themes’
$powered_by_text = sprintf( __( UBER Themes by %s’, ‘UBER’ ), ‘<a target=”_blank” rel=”designer” href=”https://uber.site/”>’ . __( ‘UBER Themes, ‘uber’ ) . ‘</a>’ );
а вот если выкинуть cat и немного подрихтовать grep, то получим то что доктор прописал – название файла, пусть до него и даже номер строки:
# grep -rnw */*/* -e ‘UBER Themes’
inc/hook/custom.php:100500: $powered_by_text = sprintf( __( UBER Themes by %s’, ‘UBER’ ), ‘<a target=”_blank” rel=”designer” href=”https://uber.site/”>’ . __( ‘UBER Themes, ‘uber’ ) . ‘</a>’ );
где
-r – рекурсивный поиск
-n – вывод номера строки
-w – только целые слова
если поставить только ключ -l то выведет просто название файла с совпадением
# grep -l */*/* -e ‘UBER Themes’
inc/hook/custom.php
Также можно добавить следующие фичи для поиска:
--exclude
– исключить определенные файлы, например по названию или расширению .notfind:
# grep --exclude=*.notfind -rnw */*/* -e 'UBER Themes'
--include
– наоборот искать в определенных файла, по названию или расширению .iskattut и .kladklad:
# grep --include=\*.{iskattut,kladklad} -rnw */*/* -e 'UBER Themes'
--exclude-dir и --include-dir
– исключение или включение директорий для поиска, например hook и начинающихся на x :
# grep --exclude-dir={hook,x*} -rnw */*/* -e 'UBER Themes'
Теги: bash