Возможное дублирование:
Как подсчитать количество папок на диске с помощью Linux?
У меня очень глубокое дерево каталогов на моем Linux-компьютере. Я хотел бы сосчитать все файлы по этому пути, включая все подкаталоги.
Например, учитывая это дерево каталогов:
/home/blue
/home/red
/home/dir/green
/home/dir/yellow
/home/otherDir/
Если я уйду /home
, я бы хотел вернуть четыре файла. Или бонусные баллы, если он возвращает четыре файла и два каталога. По сути, я хочу получить эквивалент щелчка правой кнопкой мыши по папке в Windows, выбора свойств и просмотра количества файлов / папок, содержащихся в этой папке.
Как мне легче всего это сделать? У меня есть решение, включающее скрипт Python, который я написал, но почему это не так просто, как запустить ls | wc
или подобный?
linux
command-line
omghai2u
источник
источник
locate
база данных обновлена:locate /some/path | wc -l
(или на моем Mac:)locate -c /some/path
. Но: это также подсчитает файлы/this/other/path/with/some/path
и подсчитает сами папки.Ответы:
find . -type f | wc -l
Объяснение:
find . -type f
находит все файлы ( -type f ) в этом ( . ) Каталоге, а во всех подкаталогах имена файлов затем печатаются в стандартном формате по одному на строку.Это тогда по трубопроводу | в
wc
(количество слов)-l
опция говорит wc только считать строки своего ввода.Вместе они считают все ваши файлы.
источник
find
выводе1
Ответы выше уже отвечают на вопрос, но я добавлю, что если вы используете find без аргументов (за исключением папки, в которой вы хотите, чтобы поиск происходил), как в:
поиск идет намного быстрее, почти мгновенно, или, по крайней мере, для меня. Это связано с тем, что предложение type должно запускать системный вызов stat () для каждого имени, чтобы проверить его тип - опуская его, вы избегаете этого.
Разница заключается в том, что нужно возвращать количество файлов и папок, а не только файлов, но, по крайней мере, для меня этого достаточно, поскольку я в основном использую это, чтобы найти, в каких папках есть огромное количество файлов, на копирование и сжатие которых уходит вечность. Подсчет папок по-прежнему позволяет мне находить папки с большинством файлов, мне нужно больше скорости, чем точности.
источник
1
Для файлов:
Для каталогов:
Они оба работают в текущем рабочем каталоге.
источник
1
С баш 4+
Не нужно дважды звонить, если вы хотите искать файлы и каталоги
источник
Небольшое обновление до принятого ответа, если вы хотите подсчет dirs и тому подобное
источник
find $DIR -exec stat -f '%HT' {} \; | sort | uniq -c | sort -rn
(Здесь тип%T
пуст для обычного файла, звездочка для исполняемого файла или косая черта для папки; следовательно%HT
, необходим или какой-то дополнительный текст, чтобы избежать подсчета пробелов, например> %T
. )