Назад | Перейти на главную страницу

Получить размер папки в Linux

У меня много домашних папок в / home /, и я хотел бы получить общий размер каждой папки пользователей в удобном для чтения списке.

т.е.

  1. / home / user1 100 МБ
  2. / home / user2 24 МБ
  3. / home / user3 54 МБ

и т.п.

В настоящее время используется что-то похожее на 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/*

И ты должен быть счастлив.