Найти тему

Четыре простых способа посчитать количество файлов и папок в Linux

Оглавление

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

Никогда не узнаешь, какая задача может прийти...
Никогда не узнаешь, какая задача может прийти...

Испытательный полигон

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

Папка count с некоторым количеством файлов и папок
Папка count с некоторым количеством файлов и папок

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

Способ №1. Использование команд wc и ls

Название первой команды происходит от словосочетания «word count» и занимается тем, что подсчитывает число строк, слов и байт в файлах, переданных ей в качестве параметра. Подробнее с ее аргументами вы можете познакомиться при помощи man, нас же интересует ключ -l, который позволяет вывести количество строк в объекте.

Со второй командой давние подписчики и читатели хорошо знакомы, ее название является сокращением от слова «list» и она показывает список файлов и папок. Открываем терминал и вводим туда следующий набор:

ls | wc -l

Выводим общее количество объектов через команды ls и wc
Выводим общее количество объектов через команды ls и wc

Получившееся число 31 означает общее количество того, что имеется в папке count. Теперь отсортируем содержимое по типу и покажем количество только папок:

ls -d */ | wc -l

Выводим количество только папок
Выводим количество только папок

Выходит, что в count находится 25 файлов и 6 папок.

Способ №2. Использование команды tree

Это очень простая, но крайне полезная команда, которая отображает содержимое папки в красивом древовидном выводе. Никаких дополнительных ключей для ее использования нам не понадобится.

Вывод количества папок и файлов через команду tree
Вывод количества папок и файлов через команду tree

«Выхлоп» показал, что в count находится 25 файлов и 7 папок. Уже видны нестыковки, но не будем торопиться и познакомимся, вначале, с другими способами.

Способ №3. Использование команды find и wc

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

Используя некоторые ключи команды find и уже знакомую нам команду wc с ключом -l попробуем произвести подсчет:

find . -type d | wc -l (число папок)

find . -type f | wc -l (число файлов)

Используем команду find для вывода количества файлов и папок
Используем команду find для вывода количества файлов и папок

Команда find вторит tree и утверждает, что в count находится 7 папок и 25 файлов.

Способ №4. Использование файлового менеджера

Нет, здесь мы не будем вручную считать количество файлов и папок. Мы просто откроем свойства папки count и посмотрим сведения о количество файлов и папок.

Считаем количество объектов при помощи свойств папки в файловом менеджере
Считаем количество объектов при помощи свойств папки в файловом менеджере

Файловый менеджер сказал, что внутри 6 папок и 25 файлов.

Середина на половину

Мы использовали четыре разных способа и ровно половина из них предоставила один результат (25 файлов и 7 папок), другая же половина вывела результат совсем иной (25 файлов и 6 папок). Так какой же из способов правильно посчитал? На самом деле, все способы справились с подсчетами, просто сделали они это разными методами. Чтобы понять разницу давайте выведем команды find и tree без использования wc -l:

find . -type d

tree -d

Выводим только папки через команды find и tree
Выводим только папки через команды find и tree

Видите в «выхлопе» указана точка? Если вспомнить что она обозначает, то ответ на вопрос о разных результатах будет очевиден. Если вы еще не знаете о том, что в Linux даже пустые папки не являются таковыми, то обязательно читаете материал по ссылке ниже.

Выходит, что в папке count всего 31 объект - 6 папок и 25 файлов.

Подведем итог

Понятно дело, что последним способом невозможно воспользоваться при подключении через терминал, но вот другие три вполне можно использовать в случае, когда перед вами черное окно консоли и нужно узнать количество файлов или папок в конкретной локации.

Уверен, что описанные способы окажутся полезными для кого-нибудь из читателей и подписчиков.