Я хочу найти общее количество файлов в папке и всех ее подпапках.
Может быть что-то вроде
find . -type f | wc -l
сделают свое дело. Попробуйте команду из родительской папки.
Используйте команду tree
. Возможно, вам потребуется установить пакет tree
.
В нем будут перечислены все файлы и папки в данной папке, а в конце приведена сводная информация.
Для подсчета файлов (даже файлов без расширения) в корне текущего каталога используйте:
ls -l | grep ^- | wc -l
Для подсчета файлов (даже файлов без расширения) рекурсивно из корень текущего каталога, используйте:
ls -lR | grep ^- | wc -l
find -type f -printf . | wc -c
Не считайте выходные строки поиска, потому что имена файлов, содержащие 99 новых строк, будут считаться как 100 файлов.
Вы можете использовать find . | wc -l
find .
, чтобы перечислить все файлы и папки и их содержимое, начиная с текущей папки.
wc -l
считает результаты поиска
Я бы сам выбрал эту опцию:
ls -alR | grep -c ^ -
blockquote>
find кажется быстрее, чем tree, поэтому я использовал ниже для подсчета файлов в каждом каталоге текущего рабочего каталога (игнорируя файлы в CWD) с тем, чтобы каталоги имели пробелы:
ls -d */ | while read dir_line
do
echo -n "$dir_line :"
find "$dir_line" -type f | wc -l
done
Самый быстрый и простой способ - использовать 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
Если его еще нет, вы можете получить его здесь .
Используйте эту команду для каждой папки в пути
for D in *; do echo $D; find $D -type f| wc -l; done
.