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

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

147
задан 8 April 2011 в 15:55

9 ответов

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

find . -type f | wc -l

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

0
ответ дан 8 April 2011 в 15:55

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

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

0
ответ дан 8 April 2011 в 15:55

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

ls -l | grep ^- | wc -l

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

ls -lR | grep ^- | wc -l
0
ответ дан 8 April 2011 в 15:55
find -type f -printf . | wc -c

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

0
ответ дан 8 April 2011 в 15:55

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

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

0
ответ дан 8 April 2011 в 15:55

Я бы сам выбрал эту опцию:

ls -alR | grep -c ^ -

0
ответ дан 8 April 2011 в 15:55

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

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

0
ответ дан 8 April 2011 в 15:55

Самый быстрый и простой способ - использовать 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

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

0
ответ дан 8 April 2011 в 15:55

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

for D in *; do echo $D; find $D -type f| wc -l; done
.
0
ответ дан 8 April 2011 в 15:55

Другие вопросы по тегам:

Похожие вопросы: