Как я могу рассчитать размер каталога?

181

Как узнать размер каталога? Включая подкаталоги и файлы.

Хуанхо Конти
источник

Ответы:

230
du -s directory_name

Или получить читабельный вывод:

du -sh directory_name

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

sepp2k
источник
7
На самом деле по duумолчанию POSIX использует блоки по 512 байт, а в Linux - килобайты (если не установлена ​​переменная среды POSIXLY_CORRECT) или с du -k.
Жиль
3
@ Жиль: Хороший улов. Я удалил бит "количество байтов" из моего ответа.
sepp2k
1
работал в соответствии с предписаниями
skidadon
1
если каталог очень большой и имеет много подкаталогов, это занимает много времени ... почти 1 мин .. это нормально? Есть ли способ получить размер быстрее?
агаман
2
Мне нужно было рассчитать размер моей папки «сумка», du -sh bagсработало отлично!
Антониу Алмейда,
7

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

cd /    
sudo du -sh ./*
NFlourish
источник
2
Проще говоряdu -sh /*
Ройма
1
du -csh

-c производит общий итог

Кальпеш Сони
источник
1
-cНе имеет смысла использовать вместе с -s, не так ли? -sотображает только размер указанного каталога, то есть общий размер каталога.
Андреас Сторвик Страуман
1

Пытаться

du -hax --max-depth=1 / | grep '[0-9]G' | sort -nr

Это помогает найти большие каталоги, чтобы затем просеять через du -sh ./*

rollinjack
источник
0

Вы также можете использовать ls -ldh:

ls -ldh /etc drwxr-xr-x 145 root root 12K 2012-06-02 11:44 /etc

-l для длинного списка; -d для отображения информации dir, а не ее содержимого, -h для отображения размера в читаемом формате huma.

fromnaboo
источник
4
Это не правильно, тот, кто спрашивает, явно ищет след каталога и его содержимого на диске. Ответ @ sepp2k правильный.
Блонг
1
Команда ls -ldh показывает только размер структуры inode каталога. Метрика отражает размер индексной таблицы имен файлов, но не фактический размер содержимого файла в каталоге.
linbianxiaocao
0

Я всегда устанавливаю пакет "ncdu" и вижу все выходные данные всех каталогов в графическом представлении. Это потому, что мне обычно нужно знать, что занимает больше всего дискового пространства на моих машинах, независимо от того, сколько суммирует один каталог.

Использование: sudo ncdu /(Вам не нужны sudoпапки, на которые у вас есть разрешение на чтение).

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

Etescartz
источник
0

Вы можете использовать "file-size.sh" из библиотеки awk Velor :

ls -ARgo "$@" | awk '{q += $3} END {print q}'
Стивен Пенни
источник
0

du -hd1

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

656K    ./rubberband
2.2M    ./lame
652K    ./pkg-config
Борис Якубчик
источник
0

Я попытался с помощью команды ниже, так как уже был получен лучший ответ

sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

выход

 sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

679445
Правин Кумар Б.С.
источник