it-swarm-ru.tech

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

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

189
Juanjo Conti
du -s directory_name

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

du -sh directory_name

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

245
sepp2k

GNU du принимает -b вариант.

Смотрите man страница и info страница для получения дополнительной помощи:

-b, --bytes эквивалентно --apparent-size --block-size=1

7
user2573436

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

cd /    
Sudo du -sh ./*
7
NFlourish
du -csh

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

1
Kalpesh Soni

Пытаться

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

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

1
rollinjack

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

ls -ARgo "[email protected]" | awk '{q += $3} END {print q}'
1
Steven Penny

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

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

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

0
Etescartz

du -hd1

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

656K    ./rubberband
2.2M    ./lame
652K    ./pkg-config
0
Boris Yakubchik

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

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
0
Praveen Kumar BS

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

Я обнаружил, что вычисление du может варьироваться между серверами с одинаковым размером раздела, использующих одну и ту же файловую систему. Если характеристики файловой системы отличаются, это имеет смысл, но в противном случае я не могу понять, почему. Ответ 'ls | awk', который дал Стивен Пенни, дает более последовательный ответ, но все же дал мне противоречивые результаты с очень большими списками файлов.

Использование 'find' дало согласованные результаты для 300 000+ файлов, даже при сравнении одного сервера с использованием XFS и другого с использованием EXT4. Так что, если вы хотите узнать общее количество байтов данных во всех файлах, я рекомендую, что это хороший способ получить это:

find /whatever/path -type f -printf "%s\n"|awk '{q+=$1} END {print q}'
0
Angelo Babudro

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

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

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

0
fromnaboo