Найти количество файлов в папке и вложенных папках?

Я хочу найти общее количество файлов в папке и всех ее вложенных папках.

Может быть что-то вроде

find . -type f | wc -l

это сделало бы свое дело. Попробуйте выполнить команду из родительской папки.

find . -name <pattern> -type f находит все fиль в . и вложенные папки. Результат (список найденных файлов) передается (|) к wc -l который подсчитывает количество lинес. -name <pattern> ищет только определенные файлы.

Используйте tree команда. Возможно, вам потребуется установить tree пакет.

В нем будут перечислены все файлы и папки в данной папке, а в конце будет приведена сводка.

Чтобы подсчитать файлы (даже файлы без расширения) в корне текущего каталога, используйте:

ls -l | grep ^- | wc -l

Для подсчета файлов (даже файлов без расширения) рекурсивно из корня текущего каталога используйте:

ls -lR | grep ^- | wc -l

Самый быстрый и простой способ - это использовать tree. Его скорость ограничена вашим выходным терминалом, поэтому, если вы передадите результат на tail -1, вы получите немедленный результат. Вы также можете контролировать, на каком уровне каталога вам нравятся результаты, используя -L вариант. Для цветного вывода используйте -C. Например:

$ tree share/some/directory/ | tail -1558 directories, 853 files$ tree -L 2 share/some/directory/ | tail -1120 directories, 3 files

Если его еще нет, вы можете его получить здесь.

find -type f -printf . | wc -c

Не подсчитывайте выходные строки find, потому что имена файлов, содержащие 99 новых строк, будут считаться 100 файлами.

Используйте эту команду для каждой папки в пути

for D in *; do echo $D; find $D -type f| wc -l; done

Вы можете использовать find . | wc -l

find . отобразит список всех файлов и папок и их содержимого, начиная с вашей текущей папки.
wc -l подсчитывает результаты поиска

поиск, кажется, быстрее, чем дерево, поэтому я использовал ниже для подсчета файлов в каждом каталоге текущего рабочего каталога (игнорируя файлы в CWD), разрешив каталогам иметь пробелы:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done

Я бы сам выбрал этот вариант:

ls -alR | grep -c ^-