Как я могу посчитать количество файлов (в каталоге), содержащих данную строку, как ввод в bash / sh?
Как я могу посчитать количество файлов (в каталоге), содержащих данную строку, как ввод в bash / sh?
Ответы:
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.
awk '/pattern_to_look_for/ {s+=1; nextfile;} END {print s}' *
Пояснение: это ищет количество файлов, которые имеют "pattern_to_look_for" в их содержании, а не в их именах файлов (как ответ Wag). По твоему вопросу сложно сказать, что ты ищешь.
find . ! -name . -prune -type f
(не пропустите галочки). Эта команда перечисляет только файлы в папке.
Это работает в Bash с любым именем файла:
grep -lZ "$pattern" * | tr -cd '\000' | wc -c
Объяснение:
grep
-Z
Опция 's печатает каждый результат с ␀-байтовым разделителем. Этот символ не может быть частью имени файла, поэтому мы можем просто посчитать количество разделителей, чтобы получить количество файлов.tr
.wc
.