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

94

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

    
задан topless 08.04.2011 в 13:55
источник

9 ответов

154

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

find . -type f | wc -l

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

    
ответ дан sagarchalise 08.04.2011 в 14:06
источник
19

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

Он отобразит все файлы и папки в данной папке и в конце отобразит сводку.

    
ответ дан Egil 08.04.2011 в 14:09
источник
8

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

ls -l | grep ^- | wc -l

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

ls -lR | grep ^- | wc -l
    
ответ дан user38537 12.11.2013 в 21:39
источник
8

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

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

ответ дан not2qubit 15.01.2014 в 14:20
источник
4
find -type f -printf . | wc -c

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

ответ дан user unknown 08.04.2011 в 16:21
источник
1

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

for D in *; do echo $D; find $D -type f| wc -l; done
    
ответ дан Sriram Murali 20.03.2014 в 19:02
источник
1

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

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

ответ дан Mike Bounds 21.07.2016 в 11:47
источник
0

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

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

    
ответ дан david 08.04.2011 в 14:06
источник
0

Я сам поеду с этим вариантом:

  

ls -alR | grep -c ^ -

    
ответ дан Charles 29.05.2016 в 08:55
источник

Ознакомьтесь с другими вопросами по меткам