Я хочу узнать общее количество файлов в папке и всех ее подпапках.
Я хочу узнать общее количество файлов в папке и всех ее подпапках.
Ответы:
Может быть что-то вроде
find . -type f | wc -l
сделал бы трюк. Попробуйте команду из родительской папки.
find . -type f -ls | wc -l
find . -type f -print0 | tr -d -c '\0' | wc -c
find . -type f -printf . | wc -c
- Я принимаю печать для моего решения вместо моего -exec echo.
Для подсчета файлов (даже файлов без расширения) в корне текущего каталога используйте:
ls -l | grep ^- | wc -l
Для рекурсивного подсчета файлов (даже файлов без расширения) из корня текущего каталога используйте:
ls -lR | grep ^- | wc -l
Самый быстрый и простой способ, это использовать tree
. Его скорость ограничена вашим выходным терминалом, поэтому, если вы передадите результат tail -1
, вы получите немедленный результат. Вы также можете контролировать, на каком уровне каталога вам нравятся результаты, используя -L
опцию. Для цветного вывода используйте -C
. Например:
$ tree share/some/directory/ | tail -1
558 directories, 853 files
$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files
Если его там еще нет, вы можете получить его здесь .
find -type f -printf . | wc -c
Не считайте выходные строки поиска, потому что имена файлов, содержащие 99 новых строк, будут считаться как 100 файлов.
Используйте эту команду для каждой папки в пути
for D in *; do echo $D; find $D -type f| wc -l; done
Похоже, что поиск быстрее, чем в дереве, поэтому я использовал ниже для подсчета файлов в каждом каталоге текущего рабочего каталога (игнорируя файлы в CWD) с разрешением каталогам иметь пробелы:
ls -d */ | while read dir_line
do
echo -n "$dir_line :"
find "$dir_line" -type f | wc -l
done
ls
- очень плохая идея.
Вы можете использовать find . | wc -l
find .
отобразит список всех файлов и папок и их содержимое, начиная с текущей папки.
wc -l
считает результаты поиска
Я бы пошел с этим вариантом сам:
ls -alR | grep -c ^ -