Статьи

Как посчитать количество файлов в папке Linux

Посчитать количество файлов в папке Linux проще всего так:

ls | wc -l

Это число строк в выводе ls: файлы и каталоги текущего каталога, без скрытых. Ниже — варианты, когда нужны скрытые файлы, только файлы без папок или рекурсия по подкаталогам.

Коротко: какую команду взять

ЗадачаКоманда
Файлы и папки в текущем каталоге, без скрытыхls | wc -l
То же, включая скрытыеls -A | wc -l
Только файлы, без каталогов, только здесьfind . -maxdepth 1 -type f | wc -l
Все файлы, включая подкаталогиfind . -type f | wc -l
Файлы и каталоги деревомtree -a

wc -l считает строки. Поэтому слева нужна команда, которая печатает по одному имени на строку.

ls и wc: количество файлов в папке

ls | wc -l

Считает видимые имена в текущем каталоге. Скрытые (имя начинается с точки) не попадают. Каталоги считаются наравне с файлами.

Чтобы увидеть скрытые и не посчитать служебные . и .., нужен -A:

ls -A | wc -l

Ещё точнее — печатать по одному имени на строку явно:

ls -1A | wc -l

Это единица в -1, не буква l. У ls -l в начале вывода есть строка total …, и wc -l завысит счёт на единицу.

find: только файлы, без каталогов

Каталог в Linux тоже файл. Если нужны обычные файлы, без папок:

find . -maxdepth 1 -type f | wc -l

-maxdepth 1 не заходит в подкаталоги. Чтобы посчитать количество файлов во всех вложенных папках:

find . -type f | wc -l

Только каталоги:

find . -type d | wc -l

В это число входит и текущий каталог .. Если его не нужно — вычтите единицу или отфильтруйте.

tree

tree -a рисует дерево, включая скрытые, и в конце печатает сводку: сколько каталогов и сколько файлов. Пакет ставится отдельно: apt install tree.

Частые вопросы

Как узнать количество файлов в папке Linux одной командой?

ls | wc -l для текущего каталога. find . -type f | wc -l — если нужны все файлы вниз по дереву.

Как посчитать количество файлов в папке, включая скрытые?

ls -A | wc -l. Флаг -A показывает скрытые и не показывает . и ...

Почему ls | wc -l и find дают разные числа?

ls считает имена, в том числе каталоги. find -type f считает только обычные файлы. find без -maxdepth 1 ещё и спускается в подкаталоги.