Как я определяю общий размер каталога (папка) из командной строки?

Существует ли простая команда для отображения общего совокупного размера (использование диска) всех файлов в каталоге (папка)?

Я попробовал их, и они не делают то, что я хочу:

  • ls -l, который только отображает размер отдельных файлов в каталоге, ни
  • df -h, который только отображает свободное и использованное пространство на моих дисках.
799
задан 13 February 2014 в 13:44

12 ответов

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

du -hsc *
0
ответ дан 13 February 2014 в 13:44

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

$ du -sch /home/vivek/* | sort -rh

Подробности

 ------------------------------------------------------------
   -c, --total
          produce a grand total
   -h, --human-readable
          print sizes in human readable format (e.g., 1K 234M 2G)
   -s, --summarize
          display only a total for each argument
 -------------------------------------------------------------
   -h, --human-numeric-sort
          compare human readable numbers (e.g., 2K 1G)
   -r, --reverse
          reverse the result of comparisons

Вывод

 70M    total
 69M    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/lib
992K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results
292K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target
 52K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files
0
ответ дан 13 February 2014 в 13:44

Наслаждайтесь!

du foldername

Подробнее об этой команде здесь

0
ответ дан 13 February 2014 в 13:44

tree - еще одна полезная команда для этого задания:

Просто установите его через sudo apt-get install tree и введите следующее:

tree --du -h /path/to/directory
...
...

33.7M used in 0 directories, 25 files

Из man tree :

-h    Print  the size of each file but in a more human readable way, e.g. appending a size letter for kilo‐
      bytes (K), megabytes (M), gigabytes (G), terabytes (T), petabytes (P) and exabytes (E).

--du  For each directory report its size as the accumulation of sizes of all its files and  sub-directories
      (and their files, and so on). The total amount of used space is also given in the final report (like
      the 'du -c' command.)
0
ответ дан 13 February 2014 в 13:44

du /foldername - это стандартная команда для определения размера папки. Лучше всего найти варианты, прочитав страницу руководства:

man du

Вы должны прочитать страницу руководства (доступно онлайн ), прежде чем использовать команду.

0
ответ дан 13 February 2014 в 13:44

Вот скрипт POSIX, который будет работать с:

  • Файл
  • Файлы
  • Каталог
  • Каталоги
  • [ 118]
    #!/bin/sh
    ls -ARgo "$@" | awk '{q += $3} END {print q}'
    

    Источник

0
ответ дан 13 February 2014 в 13:44

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

  • Иногда выходные данные du могут вводить в заблуждение, поскольку они сообщают о пространстве, выделенном файловой системой, которое может отличаться от суммы размеры отдельных файлов. Обычно файловая система выделяет 4096 байт для файла, даже если вы сохранили в нем только один символ!

  • Различия на выходе из-за мощности 2 и мощности 10 единиц. Переключатель -h на du делит количество байтов на 2 ^ 10 (1024), 2 ^ 20 (1048576) и т. Д., Чтобы получить удобочитаемый вывод. Многие люди могут более привыкнуть видеть силу 10 (например, 1K = 1000, 1M = 1000000) и быть удивлены результатом.

Чтобы найти общую сумму размеров всех файлов в каталоге, в байтах, выполните:

find <dir> -ls | awk '{sum += $7} END {print sum}'

Пример:

$ du -s -B 1
255729664

$ find .  -ls | awk '{sum += $7} END {print sum}'
249008169
0
ответ дан 13 February 2014 в 13:44

Если в вашем нужном каталоге много подкаталогов, используйте следующее:

$ cd ~/your/target/directory
$ du -csh 

-c, --total выведите общее количество
-s, - -summarize отображать только итоговые значения для каждого аргумента
-h, - читаемые человеком размеры печати в удобочитаемом формате (например, 1K 234M 2G)

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

0
ответ дан 13 February 2014 в 13:44

Только для размера каталога в удобочитаемом формате используйте следующее:

du -hs directoryname

Возможно, это не в том разделе, но из командной строки вы можете попробовать:

[ 111]

-s - это размер, а -h удобочитаем.

Используйте -l для отображения в списке ls, как показано ниже:

ls -shl
0
ответ дан 13 February 2014 в 13:44

Лучшим, на мой взгляд, является следующее:

du -h directory_name | tail -n1

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

Я должен добавить, что если размер папки большой, то du занимает больше времени. Вы должны быть терпеливы, чтобы эта команда сработала. Как и любая другая команда unix, вы можете узнать общее время этого процесса, используя time перед этой командой:

time du -h directory_name | tail -n1
0
ответ дан 13 February 2014 в 13:44

Команда du «суммирует использование диском каждого ФАЙЛА, рекурсивно для каталогов», например,

du -hs /path/to/directory
  • -h, чтобы получить числа, «читаемые человеком», например, получить 140M вместо 143260 (размер в килобайтах)
  • -s для сводки (в противном случае вы получите не только размер папки, но и все для в папка отдельно)

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

du -h | sort -h

Флаг -h на sort будет учитывать «Размер для чтения человеком».


Если вы хотите избежать рекурсивного перечисления всех файлов и каталогов, вы можете указать параметр --max-depth, чтобы ограничить количество отображаемых элементов. Чаще всего, --max-depth=1

du -h --max-depth=1 /path/to/directory
0
ответ дан 13 February 2014 в 13:44

Недавно я нашел отличный интерактивный инструмент на основе ncurses, который быстро дает вам представление о размерах каталогов. В течение многих лет искал такой инструмент.

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

Думайте об этом как баобаб для командной строки:

apt-get install ncdu
0
ответ дан 13 February 2014 в 13:44

Другие вопросы по тегам:

Похожие вопросы: