Как мне увидеть du в ГБ вместо MB в Linux?

24

Это работает:

du -cshm .

Но это не удается

du -cshg .

Как я могу увидеть это в единицах ГБ?

апаш
источник

Ответы:

41

У GNU duесть --block-sizeопция:

du -csh --block-size=1G .

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

Приостановлено до дальнейшего уведомления.
источник
В (GNU coreutils) 8.25 -h не работал, в то время как размер блока = 1G работал!
Флориан Штрауб
@FlorianStraub: я не уверен, что вы имеете в виду, когда -hне работаете. Это поддерживаемая опция, которая делает вывод «читаемым человеком» (т.е. с единичными суффиксами и масштабируется). Но это правда, что он игнорируется, когда --block-sizeиспользуется. Это отмечено в моем ответе.
Приостановлено до дальнейшего уведомления.
мой плохой: я имел в виду "-g не работает"
Флориан Штрауб
4

Для удобства вот ссылка на macOS:

  • -h«Человекочитаемый» вывод. Используйте суффиксы единиц измерения: байт, килобайт, мегабайт, гигабайт, терабайт и петабайт.
  • -k Количество отображаемых блоков в блоках по 1024 байта (1 Кбайт).
  • -m Количество отображаемых блоков составляет 1 048 576 байт (1 мегабайт).
  • -g Количество отображаемых блоков составляет 1 073 741 824 байта (1 ГБ).

Вот как работают различные опции для данного 1,234,567 KBфайла:

$ mkfile -n 1234567k file.txt

$ du file.txt
2469136 file.txt

$ du -k file.txt
1234568 file.txt

$ du -m file.txt
1206    file.txt

$ du -g file.txt
2   file.txt

$ du -h file.txt
1.2G    file.txt

Также стоит отметить, что вы можете настроить неявное поведение через BLOCKSIZEпеременную окружения:

BLOCKSIZEЕсли установлена ​​переменная окружения BLOCKSIZE, а -kопция не указана, количество блоков будет отображаться в единицах измерения этого блока. Если BLOCKSIZEне установлен и -kопция не указана, количество блоков будет отображаться в 512байт-блоках.

Александр - Восстановить Монику
источник
1

Используйте, du -B1073741824но будьте осторожны, это дает результат только в целочисленных единицах, и не будет иметь смысла с-h

geocar
источник
0

В дополнение к предыдущим ответам, это также, кажется, отличается между различными версиями coreutils (или локалью?), Так как на моем хосте я получаю:

$ du -csh .
32G     .
32G     total
$ du --version | head -1
du (GNU coreutils) 7.4
sajb
источник