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

Первое решение (что называется "в лоб") для подсчета количества файлов в linux директории:

$ ls -f . | wc -l

Недостатки: будет выведено общее количество записей в текущей директории с учетом всех подпапок, включая текущую (.) и верхнюю (..), что, на мой взгляд, не верно. К тому же, при очень большом количестве, когда не срабатывает ls, эта команда, естественно, тоже не даст результата.

Более правильное решение:

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

В этом случае будет выведено количество только файлов и только в текущей директории без учета вложенных. Соответственно, можно модифицировать данную команду для подсчета файлов на данном уровне и во всех вложенных папках следующего уровня:

$ find . -type f -maxdepth 2 | wc -l

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

$ find . -type f | wc -l

Посчитать общее количество всех файлы и папок с учетом вложенных директорий рекурсивно:

$ find . | wc -l

Рекурсивно посчитать количество только вложенных папок в текущей директории и всех поддиректориях можно следующим образом:

$ find . -type d | wc -l 

И наконец, если надо посчитать количество файлов определенного типа (например, фото товаров в интернет магазине):

$ find . -type f -name "*.jpg" | wc -l

В случае, если вы действительно считаете картинки товаров в магазине и их много, не забудьте, что, могли быть загружены файлы не только с расширением ".jpg", но и ".png", и ".jpeg", и ".gif", а также то, что регистр символов в имени файла в linux имеет значение. Поэтому даже для подсчета JPEG файлов имеет смысл использовать команду:

$ find . -type f -iname "*.jp*g" | wc -l