grep несколько расширений тока и подпапок - PullRequest
5 голосов
/ 28 октября 2009

Я пытаюсь выполнить поиск нескольких расширений в текущей и всех подпапках.

grep -i -r -n 'hello' somepath/*.{php,html}

Это только отображение текущей папки, но не подпапок.

Что было бы хорошим способом сделать это?

Ответы [ 3 ]

10 голосов
/ 16 октября 2012

Использование только grep:

grep -irn --include='*.php' --include='*.html' 'hello' somepath/
2 голосов
/ 28 октября 2009

Один из них:

find '(' -name '*.php' -o -name '*.html' ')' -exec grep -i -n hello {} +
find '(' -name '*.php' -o -name '*.html' ')' -print0 | xargs -0 grep -i -n hello
0 голосов
/ 23 августа 2014

Я выглядел так же, и когда решил сделать bash-скрипт, я начал с vim codesearch и с удивлением уже делал это раньше!

#!/bin/bash
context="$3"
#ln = line number mt =  match mc = file
export GREP_COLORS="sl=32:mc=00;33:ms=05;40;31:ln="
if [[ "$context" == "" ]]; then  context=5; fi
grep --color=always -n -a -R -i -C"$context" --exclude='*.mp*'\
 --exclude='*.avi'\
 --exclude='*.flv'\
 --exclude='*.png'\
 --exclude='*.gif'\
 --exclude='*.jpg'\
 --exclude='*.wav'\
 --exclude='*.rar'\
 --exclude='*.zip'\
 --exclude='*.gz'\
 --exclude='*.sql' "$2" "$1" | less -R

вставьте этот код в файл с именем codesearch и установите chmod равным 700 или 770 Я думаю, это может быть лучше, когда я забуду в следующий раз

этот скрипт покажет с цветами совпадения и контекст вокруг

./codesearch '/full/path' 'string to search' 

и необязательное определение номера строки контекста вокруг значения по умолчанию 5

./codesearch '/full/path' 'string to search' 3

Я отредактировал код и добавил немного конфет

пример ./codesearch ./ 'eval' 2 screenshot codesearch

Похоже, когда вы включили "разрешить мигать текст" в терминале

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...