То, что является единственной командой, раньше определяло только количество соответствия всех строк в файлах под /etc
каталог, которые содержат слово "ХОСТ"?
Я должен перечислить только файлы с соответствиями и подавить любые сообщения об ошибках.
Считать соответствия, перечисляя только имя (имена) файла и количество:
grep -src HOST /etc/*
Пример произвел:
/etc/postfix/postfix-files:1
/etc/security/pam_env.conf:6
/etc/X11/app-defaults/Ddd.3.3.11:1
/etc/X11/app-defaults/Ddd:1
/etc/zsh/zshrc:0
/etc/zsh/zshenv:0
-c
опция подавляет нормальный вывод и печатает счет соответствия для каждого файла.
Если требуется подавить файлы с нулевыми количествами:
grep -src HOST /etc/* | grep -v ':0$'
Распечатать номер строки (-n
) и имя файла (-H
) для каждого согласующего отрезка длинной линии для любого количества входных файлов:
grep -srnH HOST /etc/*
Пример произвел:
/etc/lynx-cur/lynx.cfg:254:.h2 LYNX_HOST_NAME
/etc/lynx-cur/lynx.cfg:255:# If LYNX_HOST_NAME is defined here or in userdefs.h, it will be
/etc/X11/app-defaults/Ddd.3.3.11:8005: DDD 3.3.11 (@THEHOST@) gets @CAUSE@\n\
/etc/X11/app-defaults/Ddd:8010: DDD 3.3.12 (@THEHOST@) gets @CAUSE@\n\
Опция -r
причины grep
рекурсивно искать файлы в каждом подкаталоге на всех уровнях в соответствии с указанным каталогом. -s
опция подавляет сообщения об ошибках.
Для подавления соответствий двоичных файлов используйте -I
опция.
Посмотрите man grep
для получения дополнительной информации.
Не одна команда, но это - одна строка
что-то как
grep -r ',,HOST' . | wc -l
Вопрос сформулирован немного нечетный. Сначала это просит сумму строк, чтобы соответствие во всех файлах, затем это хотело, чтобы Вы перечислили имена файлов.
Считать согласующие отрезки длинной линии во всех файлах:
grep -R "HOST" /etc 2> /dev/null | wc -l
Перечислять имена файлов:
grep -Rl "HOST" /etc 2> /dev/null