grep только текстовые файлы - PullRequest
48 голосов
/ 21 марта 2012
find . -type f | xargs file | grep text | cut -d':' -f1 | xargs grep -l "TEXTSEARCH" {}

это хорошее решение? для поиска TEXTSEARCH рекурсивно только в текстовых файлах

Ответы [ 2 ]

196 голосов
/ 21 марта 2012

Вы можете использовать опции -r (рекурсивные) и -I (игнорировать двоичные) в grep:

$ grep -rI "TEXTSEARCH" .
  • -I Обрабатывать двоичный файл, как если бы он не содержал совпадающих данных; это эквивалентно опции --binary-files=without-match.
  • -r Рекурсивно читать все файлы в каждом каталоге; это эквивалентно опции -d recurse.
5 голосов
/ 22 марта 2012

Другое, менее изящное решение, чем kevs, состоит в том, чтобы объединить команды -exec в find вместе без xargs и cut:

find . -type f -exec bash -c "file -bi {} | grep -q text" \; -exec grep TEXTSEARCH {} ";" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...