Grep только текстовые файлы
find . -type f | xargs file | grep text | cut -d':' -f1 | xargs grep -l "TEXTSEARCH" {}
Это хорошее решение? для поиска TEXTSEARCH рекурсивно только в текстовых файлах
Ответы
Ответ 1
Вы можете использовать опции -r
(рекурсивный) и -I
(игнорировать двоичные) в grep
:
$ grep -rI "TEXTSEARCH" .
-
-I
Обработать двоичный файл, как если бы он не содержал соответствующие данные; это эквивалентно опции --binary-files=without-match
. -
-r
Чтение всех файлов в каждом каталоге, рекурсивно; это эквивалентно опции -d recurse
.
Ответ 2
Другим, менее элегантным решением, чем kevs, является цепочка -exec команды в поиске вместе без xargs и cut:
find . -type f -exec bash -c "file -bi {} | grep -q text" \; -exec grep TEXTSEARCH {} ";"