Как я могу посчитать количество файлов (в каталоге), содержащих данную строку, как ввод в bash / sh?
19
grep -l "string" * | wc -l
будет искать «строку» в содержимом всех файлов в рабочем каталоге и сообщит вам, сколько совпадений.
grep -lr "string" directory | wc -l
если вы не хотите рекурсивного поиска, вы можете использовать опцию find with maxdepth:find directory -maxdepth 1 -type f -exec grep -l "string" {} + | wc -l
обратите внимание, что этот второй параметр медленнее, чем grep.grep
Параметр s-l
будет выводить только имена файлов, которые совпадают$PATTERN
,wc
может посчитать их потом.источник
Пояснение: это ищет количество файлов, которые имеют "pattern_to_look_for" в их содержании, а не в их именах файлов (как ответ Wag). По твоему вопросу сложно сказать, что ты ищешь.
источник
find . ! -name . -prune -type f
(не пропустите галочки). Эта команда перечисляет только файлы в папке.Это работает в Bash с любым именем файла:
Объяснение:
grep
-Z
Опция 's печатает каждый результат с ␀-байтовым разделителем. Этот символ не может быть частью имени файла, поэтому мы можем просто посчитать количество разделителей, чтобы получить количество файлов.tr
.wc
.источник