Grep рекурсивно для определенного типа файла в терминале Linux
Можно ли искать термины (например, "onblur" ) рекурсивно в некоторых папках только в определенных файлах (html файлы)?
grep -Rin "onblur" *.html
Это ничего не возвращает. Но,
grep -Rin "onblur" .
возвращает "onblur"
результат поиска из всех доступных файлов, например, в тексте ( ". txt" ),.mako,.jinja и т.д.
Ответы
Ответ 1
Рассмотрите возможность проверки этого ответа и этого.
Также это может вам помочь: grep некоторые типы файлов рекурсивно | commandlinefu.com.
Команда:
grep -r --include="*.[ch]" pattern .
И в вашем случае это:
grep -r --include="*.html" "onblur" .
Ответ 2
grep -r --include "*.html" onblur .
Получил это от:
Как рекурсивно выполнить grep?
Ответ 3
Вам также может понравиться ag 'серебряный искатель' -
ag --html onblur
он ищет по regexp и рекурсивен в текущем каталоге по умолчанию и имеет предопределенные наборы расширений для поиска - в этом случае --html сопоставляет .htm,.html,.shtml,.xhtml. Также игнорирует двоичные файлы, печатает имена файлов, номера строк и расцветки по умолчанию.
Некоторые параметры -
-Q --literal
Do not parse PATTERN as a regular expression. Try to match it literally.
-S --smart-case
Match case-sensitively if there are any uppercase letters in PATTERN,
case-insensitively otherwise. Enabled by default.
-t --all-text
Search all text files. This doesn't include hidden files.
--hidden
Search hidden files. This option obeys ignored files.
Для списка поддерживаемых типов файлов выполните ag --list-file-types
.
Единственное, чего, по-видимому, не хватает, - это указать тип файла с расширением, в этом случае вам нужно вернуться к grep с --include.