Размер папки просмотра в Linux

Обновлено: 04.07.2024

Linux предлагает вам различные удивительные команды командной строки, которые помогут в выполнении различных задач. Одной из основных задач, выполняемых из командной строки Linux, является проверка размера файла или папки. Возможно, потребуется освободить место для входящего файла или перенести его в другое место. Кроме того, когда вы запускаете некоторые развертывания, он автоматически создает файл журнала, и пространство заполняется этими файлами журнала. Поэтому мы должны отслеживать пространство файла или папки и соответственно выделять для них место на диске.

Для этого вам понадобится система Linux, интерфейс командной строки для запуска команды и права доступа пользователя для проверки свободного места в системе Linux.
Мы рассмотрим различные способы проверки размера файла или папки, доступные в системе Linux.

Использование команды du

Дю в команде «du» указывает использование диска, которое по умолчанию доступно во всех дистрибутивах Linux. Запустите приведенную ниже команду, чтобы проверить использование диска в вашей системе Linux.

Вы получите выходные данные, отображающие содержимое вашего домашнего каталога и несколько чисел слева, показывающих размер объекта в КБ.


Если вы хотите, чтобы вывод был в более удобочитаемом формате, используйте параметр «-h» и команду «du», как показано ниже.


В приведенном выше выводе вы увидите некоторые числа, заканчивающиеся символами. Число указывает объем используемого пространства, а символ указывает (обычно K, G или M) килобайт, гигабайт или мегабайт.

Если вы хотите проверить размер каталога, который отличается от текущего каталога, используйте следующий формат для команды «du».

Приведенная выше команда поможет отобразить размер содержимого каталога /var. Вы заметите ошибку в приведенном ниже выводе, поскольку у пользователя нет прав доступа к этому файлу. Если вам нужны правильные привилегии, используйте команду sudo или su, как указано ниже.


Если вы хотите отобразить общее использование диска для определенного каталога, используйте команду «-c», как показано ниже.

Чтобы получить выходные данные в удобочитаемом формате, объедините параметр "-c" и параметр "-h", как показано ниже.

Ну, вы даже можете поставить ограничение на отображение определенного уровня подкаталога с помощью опции «max-depth». Рассмотрим приведенный ниже пример для отображения только верхнего уровня каталога.

Но если вы хотите указать сведения о верхнем уровне каталога вместе с первым уровнем подкаталога, запустите приведенную ниже команду со значением max_depth, равным «1», как показано ниже.


Использование команды дерева

В некоторых версиях Linux нет команды дерева; вы можете явно установить его следующим образом.

    Для дистрибутива Linux — Debian/Ubuntu

Использование команды дерева отобразит визуальное представление ваших каталогов. Вы можете использовать команду дерева вместе с несколькими опциями для различных функций. Чтобы получить вывод в удобочитаемом формате, используйте следующую команду с параметром «-h».


Вы также можете использовать команду дерева, если хотите настроить таргетинг на конкретный каталог.

Если указанный каталог содержит несколько элементов, приведенной выше команде потребуется время для создания выходных данных.

Использование команды ncdu

ncdu также известен как NCurses Disk Usage, который по умолчанию доступен не во всех дистрибутивах Linux. Вы можете явно установить его, используя приведенные ниже команды для различных дистрибутивов Linux.

    Для дистрибутива Linux — Debian/Ubuntu

Используйте команду ncdu для интерактивного отображения использования диска.


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

Вы также можете использовать команду ncdu для выбора определенного каталога.

Чтобы получить помощь по команде ncdu, нажмите «?» key внутри интерфейса ncdu. Если вы хотите выйти, вы можете нажать букву «q».

Заключение

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

Об авторе

Симран Каур

Симран работает техническим писателем. Выпускник MS Computer Science из известного центра CS, также известного как Силиконовая долина, также является редактором веб-сайта. Ей нравится писать на любые технические темы, включая программирование, алгоритмы, облачные технологии, науку о данных и искусственный интеллект. Ей нравятся путешествия, рисование и садоводство.

Я попытался получить размер каталога (содержащего каталоги и подкаталоги) с помощью команды ls с параметром l . Кажется, это работает для файлов ( ls -l имя файла ), но если я пытаюсь получить размер каталога (например, ls -l /home ), я получаю только 4096 байт, хотя в целом это намного больше.< /p>


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

поскольку вы кажетесь новичком, я просто укажу на полезную опцию -h, которую вы можете добавить к опции -l (например, ls -lh ), чтобы получить размеры файлов, которые будут распечатаны в удобном для человека виде. например 1.1M вместо 1130301. «h» в команде du -hs, которую @sam дал в качестве ответа на ваш вопрос о каталогах, также означает «удобочитаемый», и он также появляется в df -h, который показывает удобочитаемый количество используемого и свободного места на диске.

16 ответов 16

du -sh file_path

Пояснение

    Команда du (использование диска) оценивает использование пространства file_path

Параметры -sh (от man du ):

Чтобы проверить несколько каталогов и увидеть их общее количество, используйте du -sch :



Это очень хорошо работает с поиском, например. чтобы подсчитать количество места в определенных подкаталогах по текущему пути: $ find . -type d -name "node_modules" -prune -exec du -sh <> \;

Сейчас я смотрю на папку, которую только что скопировал с внешнего диска. Он содержит четыре файла (без жестких ссылок). du -ba $folder сообщает, что каждый из этих файлов имеет одинаковый размер в скопированных папках, но общий размер на уровне папок не совпадает. du -bs , du -h и т. д., тот же ответ. (Размер одной папки на шесть байт больше, чем сумма файлов; размер другой примерно на 10% больше.) Я видел эту проблему перед сравнением папки на внешнем диске. Есть ли какая-нибудь команда unix, которая надежно сообщит о двух папках, содержащих одинаковые файлы, как об одинаковом «размере»?

Просто используйте команду du:

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

Вы можете использовать команду df, чтобы узнать свободное место в файловой системе, содержащей каталог:


du -sh * начинает выдавать ошибку "неизвестный параметр", если какой-либо из файлов в этом каталоге начинается с дефиса. Безопаснее делать du -sh -- *

du -sh -- * .* для включения точечных файлов. Это полезно, например, для включения возможно большого каталога .git. В качестве альтернативы в zsh вы можете по умолчанию настроить globdots на glob dotfiles.

(--) используется в большинстве встроенных команд bash и во многих других командах для обозначения конца параметров команды, после которых принимаются только позиционные параметры. источник

du — твой друг. Если вы просто хотите узнать общий размер каталога, перейдите в него и выполните:

Если вы также хотели бы знать, какие подпапки занимают сколько места на диске?! Вы можете расширить эту команду до:

что даст вам размер всех подпапок (уровень 1). Вывод будет отсортирован (самая большая папка сверху).



Похоже, что в некоторых (возможно, более старых?) версиях linux sort не имеет переключателя h, и поэтому следующая лучшая команда, которую я смог найти, это: du -c --max-depth=1 | сортировать -rn

+1 для --max-depth . Мне нужно было видеть размер папок моего текущего каталога, а не всех подкаталогов и файлов. Это решило мою проблему

du может быть сложным в использовании, так как вам нужно передать 100 аргументов, чтобы получить достойный результат. А определить размер скрытых папок еще сложнее.

Облегчите себе жизнь и используйте ncdu .

ncdu

Вы получаете сводки по папкам, которые легко просматривать.


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

Другие упомянули du ​​, но я также хотел бы упомянуть Ncdu, который является версией du для ncurses и обеспечивает интерактивность: вы можете напрямую исследовать иерархию каталогов и видеть размеры подкаталогов.


Команда du показывает использование файла на диске.

Опция -h показывает результаты в удобочитаемой форме (например, 4k, 5M, 3G).

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

В вашем примере вы использовали ls -l для одного файла, который вернул фактический размер файла, а НЕ его размер на диске.

Если вы хотите узнать фактические размеры файлов, добавьте к du параметр -b.


Да. Я использую sdfs, который сжимает и дедуплицирует файлы, поэтому я не мог понять, почему он сообщает такие низкие цифры. Фактический размер файлов с ls можно узнать с помощью: du -b

лично я думаю, что это лучший вариант, если вы не хотите использовать ncdu


Спасибо! Команда для просмотра размера только прямых дочерних элементов, позволяющая избежать огромной стены текста, которая отображается при использовании обычной «рекурсивной» версии.

Это показывает, сколько места у вас осталось на текущем диске, а затем сообщает вам, сколько занимает каждый файл/каталог. например,

Вот функция для ваших псевдонимов .bash


Еще один вариант:


рекурсивно найти все файлы в текущем каталоге и суммировать их размер:


Я бы использовал -not -type d для суммирования не только размеров обычных файлов ( -type f ), но и размеров символических ссылок и так далее.

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

Обратите внимание, что du печатает место, занимаемое каталогом на носителе, которое обычно больше, чем просто общий размер всех файлов в каталоге, потому что du учитывает размер всей вспомогательной информации, которая хранится на носителе для организовать каталог в соответствии с форматом файловой системы.

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

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

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

или еще короче:

Он просто суммирует размеры всех файлов, не входящих в каталог, в каталоге (и его подкаталогах рекурсивно) один за другим. Обратите внимание, что для символических ссылок он сообщает размер символической ссылки (а не файла, на который указывает символическая ссылка).

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

Приблизительное время чтения: 3 минуты

Оглавление

Терминал, показывающий man-страницу

Что такое команда du?

Команда du — это утилита командной строки для создания отчетов об использовании дискового пространства файловой системой. Его можно использовать, чтобы узнать использование диска для файлов и папок и показать, что занимает место.Он поддерживает отображение только каталогов или всех файлов, отображение общего итога, вывод в удобочитаемом формате и может быть объединен с другими инструментами UNIX для вывода отсортированного списка самых больших файлов или папок в системе.

Как просмотреть сводку использования диска для каталога

Чтобы просмотреть сводку использования диска для каталога, передайте каталог команде du. Будет напечатана сводка файлов и папок в каталоге.

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

Как просмотреть общую сумму для каталога

Чтобы просмотреть общую сумму для каталога, укажите параметр -c. Это покажет полный вывод и добавит итоговую строку.

Как просмотреть использование диска в удобочитаемом формате

Чтобы просмотреть использование диска в удобочитаемом формате, укажите параметр -h. Вместо отображения размера файла в килобайтах для всех файлов и папок выходные данные преобразуются в удобочитаемый формат.

Как просмотреть размер файла каталога

Чтобы просмотреть размер файла в каталоге, передайте параметр -s команде du, а затем имя папки. Это выведет общий размер папки на стандартный вывод.

Наряду с параметром -h возможен удобочитаемый формат.

Как сортировать по размеру файла или папки

Для сортировки по размеру файла передайте вывод du для сортировки и используйте параметры -n (числовой) и -r (обратный).

Как найти самые большие файлы или папки в файловой системе

Чтобы найти самые большие папки в файловой системе, укажите параметр -a. Это изменит поведение du для записи количества файлов, а также папок. Запустите следующую команду от имени пользователя root, чтобы увидеть десять самых больших файлов или папок в системе. Это может быть полезно, если вы имеете дело с проблемами нехватки места на диске в системе.

Дополнительная литература

У вас есть новости или предложения по этой статье? Вы можете отредактировать его здесь и отправить мне запрос на вытягивание.

Последние публикации

Об авторе

Джордж Орнбо живет в Великобритании.

Он увлекается людьми, музыкой, едой и писательством. В предыдущей версии себя он писал книги по технологиям.


Энтони Хеддингс


Энтони Хеддингс
Писатель

Энтони Хеддингс (Anthony Heddings) – штатный облачный инженер LifeSavvy Media, технический писатель, программист и эксперт по платформе Amazon AWS. Он написал сотни статей для How-To Geek и CloudSavvy IT, которые были прочитаны миллионы раз. Подробнее.

Bash Shell

Хотя команда Linux ls может отображать размеры файлов, она не работает должным образом с каталогами, которые всегда будут отображаться как 4096 байт. Вам нужно будет использовать команду du, чтобы перейти в подкаталоги и распечатать итог.

Использование команды du

Лучшей заменой ls является использование du с парой флагов:

Флаг -h означает "удобочитаемый" и форматирует размеры в КБ, МБ и ГБ вместо того, чтобы вызывать калькулятор.

Флаг -a означает «все» и будет включать отдельные файлы, а также каталоги, что делает его полезным для имитации работы ls.

Флаг -d 1 определяет, насколько глубоко du будет печатать результаты. По умолчанию он настроен на печать каждого отдельного подкаталога, что может быть проблемой, если у вас много вложенных файлов. Флаг -d суммирует их все и распечатывает общее количество для каждого видимого каталога, из которого вы выполняете команду.


Если вы предпочитаете отображать все каталоги, вы можете запустить команду с флагом --apparent-size, который отобразит общий размер каждого подкаталога, как если бы вы щелкнули правой кнопкой мыши > Свойства в проводнике.

Однако все это перемешано, поэтому, если вы хотите просмотреть самые большие каталоги в текущей папке, вы можете направить вывод в команду сортировки. Не забудьте также использовать флаг -h, иначе при сортировке 128 МБ будет считаться большим числом, чем 1 ГБ .


По умолчанию du использует текущий каталог, но вы также можете настроить таргетинг на определенные каталоги. Просто передайте местоположение в качестве последнего аргумента.

Поиск самых больших каталогов на вашем сервере

Распространенной задачей в Linux является отладка больших объемов дискового пространства. Если вы хотите просмотреть общее использование для каждого диска, вы можете использовать df -h или установить инструмент мониторинга, например, looks, который покажет его более четко:


Однако при этом не происходит детализации каталогов и не обнаруживается источник проблемы. Для этого вы можете использовать du , но удалите флаг -d 1, чтобы он выполнял поиск во всех каталогах. Нацельте его на корень, отсортируйте и отфильтруйте 25 лучших каталогов, чтобы ваш экран не переполнялся.


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

  • › Как развернуть веб-сервер Caddy с помощью Docker
  • › Как развернуть сервер GitLab с помощью Docker
  • › Как добавлять, заменять и удалять теги изображений Docker
  • › Что нового в TypeScript 4.6?
  • › CloudFoundry или Kubernetes: какую облачную платформу выбрать?
  • › Как использовать Docker для упаковки приложений CLI

Читайте также: