искать в подкаталогах все html-файлы, содержащие тег

У меня в каталоге много файлов разных расширений. Что я хочу, так это перечислить все .html файлы, которые содержат только тег.

2
задан 14.06.2015, 02:46

3 ответа

От терминала используйте эти find команда, чтобы найти все файлы, заканчивающиеся в .html и использовать эти grep команда для фильтрации результатов показать только названия файлов, которые содержат эти <abbr> строка:

cd /path-to-dir ## change directories to the root directory that you are searching from
find . -name "*.html" -exec grep -l '<abbr>' {} +  

find команда ищет файлы в иерархии каталогов рекурсивно по умолчанию.

Или объединение две команды в единственную команду:

find /path-to-dir -name "*.html" -exec grep -l '<abbr>' {} +
5
ответ дан 04.10.2019, 13:26
  • 1
    +1, но почему cd /path-to-dir и не всего find /path-to-dir? Это, кажется, добавляет бесполезную сложность. Я также использовал бы -exec ... + вместо -exec \; для повышения эффективности. – Arthur Tacca 14.06.2015, 04:12
  • 2
    Вы shouldn' t поиск <abbr>, но для <abbr, так как тег может иметь атрибуты и won' t быть согласованным <abbr>. – sykora 14.06.2015, 09:27
  • 3
    @karel Isn' t это, что я просто сказал? – Rafał Dowgird 14.06.2015, 09:29
  • 4
    Все еще grep -r более простой, чем find тогда exec grep. Смотрите на моем ответе – Colonel Panic 15.06.2015, 19:00
  • 5
    That' s одна вещь я сделал для создания моего удара прозрачным и очевидным. Другая вещь, которую я сделал, состояла в том что я didn' t добавляют regex для соответствия открытым HTML-тэгам , который мог быть отдельным вопросом. – Cristian Ciupitu 15.06.2015, 20:31

Простое решение:

grep -r "<abbr" --include="*.html" /path-to-dir
  • использование -r для всех подкаталогов.
  • Использование --include='*html' для соответствия файлам HTML только.
1
ответ дан 04.10.2019, 13:26

Для проверки (а именно, file name и lines with <abbr>), можно использовать простое:

grep '<abbr>' /path-to-dir/*.html

, Если Вы хотите имена файлов только, используйте следующее:

grep '<abbr>' /path-to-dir/*.html | awk -F: '{ print $1 }' | sort | uniq
0
ответ дан 04.10.2019, 13:26

Теги

Похожие вопросы