5 способов подсчитать файлы в каталоге в Linux
Устали вручную подсчитывать файлы? Подсчитайте их все автоматически, включая скрытые.
Ключевые выводы
- Команда «ls» в Linux выводит список файлов и каталогов. При передаче команды «wc -l» подсчитывается общее количество файлов и каталогов, включая скрытые.
- Команда «дерево» рекурсивно отображает всю структуру каталогов и в конце суммирует количество файлов. Добавление опции «-a» также отображает скрытые файлы.
- Команда «найти» с такими параметрами, как -type, -minглубина и -maxглубина, может рекурсивно подсчитывать файлы и каталоги. Используйте «-type f» для подсчета только файлов и «-type d» для подсчета только каталогов.
При работе с такими операционными системами, как Linux, управление файлами является одной из фундаментальных задач. Если вы администратор Linux, представьте, с каким количеством файлов вам приходится иметь дело. А если ваши файлы занимают много места на диске, то расколоть его будет непросто. Давайте обсудим некоторые способы подсчета этих файлов, включая надоедливые скрытые файлы.
Зачем нам нужно считать файлы в Linux?
Если вы администратор Linux или только начинаете работать с командами Linux, вам в конечном итоге понадобится подсчитать файлы в каталоге Linux. Возможно, вам нужно освободить место в вашей системе, запланировать резервное копирование системных файлов и оценить объем данных, подлежащих резервному копированию, или просто хотите, чтобы ваши файлы были организованы. Это задача, которую должен знать каждый пользователь Linux.
Предположим, во время работы в вашей системе закончились индексные дескрипторы. Внезапно вы сталкиваетесь с ужасной ошибкой «На устройстве не осталось места» и не можете создавать новые файлы или каталоги. Вот тогда пришло время засучить рукава и управлять файлами и каталогами, занимающими место на диске, путем их подсчета. К счастью, в Linux существует несколько команд, позволяющих это сделать.
Подсчет файлов и каталогов, включая скрытые файлы, с помощью команды wc
В Linux команда ls
может вывести список всех файлов и каталогов. Эта команда, передаваемая по конвейеру (|) с командой wc
, возвращает общее количество файлов и каталогов, включая скрытые.
Прежде чем мы приступим к подсчету файлов, давайте перечислим реальные файлы в каталоге ~/HTG с помощью команды ls
. Здесь у нас всего десять файлов, включая четыре подкаталога внутри основного каталога ~/HTG. Существует один скрытый файл, один текстовый файл и четыре тестовых файла.
Для вывода списка файлов рекомендуется использовать ls -A
вместо ls -a
. ls
команда с -а
Опция включает специальные записи — (.) текущий каталог и (..) родительский каталог. Это приводит к общему увеличению количества файлов.
Чтобы подсчитать количество файлов и каталогов, сначала перейдите в каталог и выполните следующую команду:
ls | wc -l
Сначала команда ls
выводит список всех файлов и каталогов в каталоге ~/HTG без каких-либо параметров форматирования. Вывод ls
состоит из простого списка имен файлов и каталогов, каждое имя которого находится на отдельной строке.
Чтобы подсчитать файлы, перечисленные командой ls
, мы передаем (|) ее выходные данные команде wc -l
. Команда wc подсчитывает эти перечисленные файлы и выводит количество файлов. Запомните девятый вывод этой команды, поскольку он не содержит ни одного скрытого файла в каталоге ~/HTG.
У нас есть разные варианты использования с командой ls
. Например, ls -l
выводит список файлов и каталогов в текущем каталоге, используя формат длинного списка (-l)
. Он предоставляет подробную информацию о каждом файле, включая разрешения, владельца, размер и дату изменения.
ls -l | wc -l
Эта команда не включает скрытые файлы, но включает запись самого каталога (представленного .) в формате длинного списка — в данном случае это каталог ~/HTG. В результате общее количество увеличивается на единицу.
Если вам нужен единообразный подсчет независимо от формата листинга, вы можете использовать опцию -A с ls
, чтобы исключить при подсчете специальные записи (.) текущего каталога и (..) родительского каталога:
ls -A | wc -l
Это должно обеспечить тот же счетчик, что и команда ls -l
. Результат равен 10, поскольку эта команда также включает один скрытый файл.
Если вам нужна команда, включающая в общее количество скрытые файлы, родительский каталог (..) и текущий каталог (.), используйте параметр ls -a
с wc
команда.
ls -a | wc -l
Подсчет количества файлов и каталогов с помощью команды дерева
Чтобы подсчитать количество файлов и каталогов во всех подкаталогах, вы можете использовать команду tree
. Команда дерева рекурсивно печатает всю структуру каталогов и отображает сводку в конце вывода.
<directory> tree
Вы можете обнаружить ошибку отсутствия команды дерева. Чтобы устранить ее, установите команду дерева, используя:
Для хостов Ubuntu/Debian: дерево установки sudo apt Для хостов CentOS/RHEL: дерево установки sudo yum
По умолчанию команда дерева не печатает скрытые файлы. Чтобы отобразить скрытый файл, используйте параметр -a
с командой дерева:
tree -a
Теперь все файлы перечислены и подсчитаны, включая скрытые.
Рекурсивный подсчет файлов с помощью команды find
Команда find в Linux с ее различными параметрами, такими как -type
, -minlength
и -maxlength
, может помочь легко выполнить рекурсивный подсчет. Он определяет общее количество элементов в структуре каталогов без необходимости вручную переходить в каждый подкаталог и подсчитывать их один за другим.
find <directory> <options> | wc -l
Команда find делает поиск рекурсивным, поскольку по умолчанию он учитывает каждый подкаталог. Он не прекращает свой поиск на первой глубине.
Чтобы подсчитать все записи (как файлы, так и папки) внутри каталога, используйте:
find HTG | wc -l
Эта команда также подсчитывает текущий каталог, которым в данном случае является ~/HTG — в целом результат поиска увеличивается на единицу.
Команда find без каких-либо особых условий по умолчанию включает в свой поиск как обычные, так и скрытые файлы.
Для подсчета только файлов используйте:
find HTG -type f | wc -l
Чтобы подсчитать только каталоги, включая текущий каталог, в данном случае ~/HTG, используйте:
find HTG -type d | wc -l
Команда find также может искать файлы, соответствующие определенным шаблонам («.txt», «.pdf», «.sh»):
find . -type f -name "*.txt" | wc -l
Эта команда выводит количество файлов в текущем каталоге, заканчивающихся расширением «.txt».
Когда вы подсчитываете файлы в папке и ее подпапках, иногда вам не разрешается просмотреть все подпапки, поэтому ваша система может показать ошибку типа «отказано в доступе».
Вы можете использовать технику, называемую «перенаправление вывода», чтобы перенаправить эти сообщения об ошибках.
find /etc -type f 2> /dev/null | wc -l
Мы также можем изменить результат поиска, используя параметры «minглубина» и «максглубина».
find HTG -mindepth 1 -maxdepth 1 | wc -l
В этом случае -minглубина 1
означает, что поиск начинается с глубины минимум 1, пропуская сам корневой каталог и начиная поиск в его ближайших подкаталогах.
Параметр -maxlength 1
выполняет поиск на максимальную глубину 1. Он не исследует подкаталоги ближайших подкаталогов.
Подсчет файлов в каталоге Linux с помощью сценария Bash
В Linux сценарии Bash могут автоматизировать повторяющиеся задачи. То же самое и здесь: мы можем написать сценарий bash и определить каталог для подсчета присутствующих в нем файлов.
Данные сценарии bash используют команду find, передаваемую через wc, для подсчета всех файлов в каталоге ~/HTG. Этот сценарий при выполнении выводит 11, поскольку он также подсчитывает текущий каталог, увеличивая результат на единицу.
#!/bin/bash
dir="HTG"
count=$(find "$dir"; | wc -l)
echo "There are $count files in the $dir directory."
Как поясняется в команде поиска, чтобы исключить специальные каталоги из окончательного подсчета, добавьте к команде поиска параметр -minглубина 1
.
Подсчет файлов с помощью графического интерфейса
Подсчитывать файлы в Linux с помощью интерфейса рабочего стола, такого как KDE или GNOME, очень просто! Это похоже на подсчет файлов в Windows.
Откройте каталог или папку для проверки, перейдя в меню активности или используя «Домашний» каталог.
Щелкните правой кнопкой мыши папку и выберите «Свойства».
Появится новое окно, показывающее общее количество элементов в папке.
Помните, что этот метод отображает только общее количество всех элементов (например, «текстовых файлов», «.sh-файлов» и «каталогов») и не учитывает отдельные файлы. По крайней мере, файловый браузер Ubuntu по умолчанию Nautilus этого не делает, но другие, такие как Dolphin Browser, показывают больше данных.
Проверьте необходимые разрешения для подсчета файлов
При выполнении всех этих команд убедитесь, что у вас есть необходимые разрешения для рабочей папки. Введите «sudo» перед командой, если вы столкнулись с ошибкой разрешения. Также проверьте синтаксис команды на случай возникновения ошибок. Чтобы получить максимальную отдачу от этих команд, обратитесь к соответствующим справочным руководствам, используя команду «man».