Я хочу grep -R
каталог, но исключаю символические ссылки, как dow я это делаю?
Может быть что-то вроде grep -R --no-symlinks
или что-то еще?
Спасибо.
Я хочу grep -R
каталог, но исключаю символические ссылки, как dow я это делаю?
Может быть что-то вроде grep -R --no-symlinks
или что-то еще?
Спасибо.
Gnu grep v2.11-8 и, если вызывается с -r
исключает символические ссылки не указан в командной строке и включает их при вызове с помощью -r
.
Если вы уже знаете имена (имена) символических ссылок, которые вы хотите исключить:
grep -r --exclude-dir=LINK1 --exclude-dir=LINK2 PATTERN .
Если имена (имена) символических ссылок меняются, возможно, сначала исключить символические ссылки с помощью команды find, а затем grep файлы, которые это выдает:
find . -type f -a -exec grep -H PATTERN '{}' \;
"-H" для grep добавляет имя файла к выходу (это по умолчанию, если grep ищет рекурсивно, но не здесь, где grep получает отдельные имена файлов.)
Я обычно хочу изменить grep, чтобы исключить каталоги управления версиями. Это наиболее эффективно выполняется командой начального поиска:
find . -name .git -prune -o -type f -a -exec grep -H PATTERN '{}' \;
На данный момент.. вот как я могу исключить символические ссылки при использовании grep
Если вам нужны только имена файлов, соответствующие вашему поиску:
for f in $(grep -Rl 'search' *); do if [ ! -h "$f" ]; then echo "$f"; fi; done;
Объяснение:
grep -R # recursive
grep -l # file names only
if [ ! -h "file" ] # bash if not a symbolic link
Если вы хотите, чтобы результат совпадающего содержимого, как насчет двойного grep:
srch="whatever"; for f in $(grep -Rl "$srch" *); do if [ ! -h "$f" ]; then
echo -e "\n## $f";
grep -n "$srch" "$f";
fi; done;
Объяснение:
echo -e # enable interpretation of backslash escapes
grep -n # adds line numbers to output
.. Это, конечно, не идеально. Но это может сделать работу!
Если вы используете старший grep, который не имеет поведения -r, описанного в ответе Aryeh Leib Taurog, вы можете использовать комбинацию find
, xargs
и grep
:
find . -type f | xargs grep "text-to-search-for"