Я хочу найти общее количество файлов в папке и всех ее вложенных папках.
Может быть что-то вроде
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 ^-