У меня много домашних папок в / home /, и я хотел бы получить общий размер каждой папки пользователей в удобном для чтения списке.
т.е.
и т.п.
В настоящее время используется что-то похожее на du -hc | grep total
du -hcs /home/*/
Или именно то, что вы хотите:
for i in /home/*/; do
user=${i#/*/}
space=$(du -hs "$i" | cut -f1)
echo "${user%/} = $space"
done
ИМО, слияние ответов Эрни и Депеса ближе всего к тому, что вы просили, за исключением того, что это должно быть «du -s / home / * / | сорт -n '. 'du -h' неправильно сортируется с 'sort -n', потому что это уже не число, например 10G сортирует до 10M
другой альтернативой, если вы хотите узнать общее дисковое пространство, используемое каждым пользователем, независимо от того, находится ли оно в их домашнем каталоге или нет, - это установить утилиты квот, включить учет квот в соответствующей файловой системе (ах), но оставить каждого пользователя квота на уровне 0 (без ограничений). который сообщит вам об используемом дисковом пространстве, а также о количестве используемых файлов / inodes.
тогда вы можете просто запустить repquota -a, чтобы получить такой отчет:
*** Report for user quotas on device /dev/sda8 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace user1 -- 67844 0 0 7748 0 0 user2 -- 21908 0 0 1742 0 0 user3 -- 27212 0 0 258 0 0 user4 -- 25492 0 0 328 0 0 user5 -- 575536 0 0 2972 0 0 user6 -- 83944 0 0 1114 0 0 user7 -- 501304 0 0 3418 0 0 user8 -- 760068 0 0 5011 0 0 user9 -- 1445396 0 0 1932 0 0 ...
repquota также имеет параметр «-s» для «удобочитаемого» вывода, например «-h» в du. не удивительно, что у него та же проблема сортировки, что и у du -h.
Что ты пытаешься выяснить?
Если вы хотите сортировать по размеру, попробуйте следующее:
du -s /home/ |sort -n
просто запустите это:
du -sh /home/*
И ты должен быть счастлив.