Как узнать размер папки в linux?

Размер папки в linux

Просмотр размера текущей папки

Чтобы показать объем просто одного текущего каталога (со всеми вложенными файлами + подкаталогами) подойдёт команда du с ключиком -sh.

Вот пример, как определить размер директории данного сайта:

du -sh

root@Debian:/var/www/linuxcmd.ru# du -sh
25M     .
root@Debian:/var/www/linuxcmd.ru#

Посмотреть размеры всех папок

Если нужно посчитать вес всех директорий плюс файлы — добавляем звёздочку:

du -sh *

root@Debian:/var/www/linuxcmd.ru# du -sh *
4.0K    unix.html
8.0K    authorize.php
4.0K    cron.php
2.1M    files
4.0K    centos.html
72K     img
2.2M    includes
4.0K    index.php
4.0K    install.php
912K    misc
12M     modules
196K    profiles
4.0K    robots.txt
80K     scripts
7.0M    sites
696K    themes
8.0K    translations
20K     update.php
4.0K    web.config
4.0K    xmlrpc.php
0       ubuntu.txt
root@Debian:/var/www/linuxcmd.ru#

Отобразить размеры всех вложенных папок

Чтобы проверить информацию в том числе вообще по всем папкам, вместе со вложенными - понадобится самый короткий вариант:

du -h

Внимание: если такой случайно запустить в корне на объёмном диске с большим количеством информации - лучше сразу жмите CTRL-C, т.к. во-первых, иначе придётся сильно подождать ;) , во-вторых, десятки-сотни экранов информации будут бессмысленными. Потому эта простая команда должна использоваться лишь для, соответственно, простых случаев.

Отсортировать папки по объёму

du -s *| sort -nr

Покажет объём в килобайтах с сортировкой - самые большие папки/файлы сверху. Если нужно в мегабайтах:

du -sm *| sort -nr

К сожалению более удобный ключик h ("human" - автовыбор кило-мега-гига) в данном случае (du -sh *| sort -nr) не подойдёт, т.к. сортировка идёт по "числам" (не учитывая, что это KB/MB/GB). Для этого придётся использовать длинную команду:

du -s *|sort -nr|cut -f 2-|while read a;do du -hs $a;done

root@Debian:/var/www/linuxcmd.ru# du -s *|sort -nr|cut -f 2-|while read a;do du -hs $a;done
12M     modules
7.0M    sites
2.2M    includes
2.1M    files
912K    misc
696K    themes
196K    profiles
80K     scripts
72K     img
20K     update.php
8.0K    translations
8.0K    authorize.php
4.0K    xmlrpc.php
4.0K    web.config
4.0K    robots.txt
4.0K    install.php
4.0K    index.php
4.0K    centos.html
4.0K    cron.php
4.0K    unix.html
0       ubuntu.txt
root@Debian:/var/www/linuxcmd.ru#

Получается "заумно", зато всё красиво!

Такую можно уже запускать даже в корне, обождав (если файлов много - серьёзно обождав) получим нечто типа:

root@Debian:/# du -s *|sort -nr|cut -f 2-|while read a;do du -hs $a;done
du: cannot access `proc/30976/task/30976/fd/4': No such file or directory
du: cannot access `proc/30976/task/30976/fdinfo/4': No such file or directory
du: cannot access `proc/30976/fd/4': No such file or directory
du: cannot access `proc/30976/fdinfo/4': No such file or directory

314M    usr
291M    var
120M    lib
76M     tmp
34M     home
18M     boot
4.6M    bin
4.4M    sbin
3.0M    etc
56K     dev
32K     root
16K     lost+found
4.0K    srv
4.0K    selinux
4.0K    opt
4.0K    mnt
4.0K    media
0       sys

du: cannot access `proc/31009/task/31009/fd/4': No such file or directory
du: cannot access `proc/31009/task/31009/fdinfo/4': No such file or directory
du: cannot access `proc/31009/fd/4': No such file or directory
du: cannot access `proc/31009/fdinfo/4': No such file or directory

0       proc
root@Debian:/#

Если вам помогла или просто понравилась статья - плюсаните/поделитесь, пожалуйста.

Комментарии

Linux + размер папки = du --si -s

Вообще-то, это то же самое, как и определение размера директории с помощью du -sh. ;) Ибо ключик --si = -h, лишь считающий, что 1024=1000. :)

Народ, а как найти размер папки (linux), у которой он больше чем, скажем, 100 мегабайт?

Придётся использовать (для linux - размер папок) ещё более хитрую конструкцию с добавлением find:

find -type d | while read DIRNAME; do if ((`du -sm "$DIRNAME" | awk '{print $1}'`> 100))  ; then echo $DIRNAME; fi;done

п.с. Небольшая неудобность будет в том, что если вложенная папка больше 100M, то будут перечислены и все папки "более высокого уровня" - ведь они тоже будут весить больше 100Мб.

п.с.п.с. Если требуются другие пределы, скажем, больше 20k, то вместо...

(`du -sm "$DIRNAME" | awk '{print $1}'`> 100)

...пишем...

(`du -sk "$DIRNAME" | awk '{print $1}'`> 20)

...и т.п. по аналогии.

Выводи то, что весит больше 100Мб, по возрастанию:

du -xm | sort -ni | awk '{if($1>100) print}'

Не сработает.

А вот один из гуру линуксов подсказал следующие вариантики:

Linux - узнать размер папки с сортировкой

find /home/hamer/download/ -type d -exec du -sm "{}" \; | awk "{if (\$1 > 100) print}"
38957   /home/hamer/download/
696     /home/hamer/download/IM
109     /home/hamer/download/IM/qutim
302     /home/hamer/download/IM/skype
143     /home/hamer/download/IM/skype/2012
107     /home/hamer/download/IM/twister
101     /home/hamer/download/IM/twister/bin

Linux - размер каталогов с сортировкой без вывода самих размеров

find /home/hamer/download/ -type d -exec du -sm "{}" \; | awk "{if (\$1 > 100) print \$2}"
/home/hamer/download/
/home/hamer/download/IM
/home/hamer/download/IM/qutim

du --max-depth=1 -m |sort -n

показывает все папки в каталоге в мегабайтах и сортирует по возрастанию.

У команды sort есть ключик -h. Следующая команда выведет в удобочитаемом виде список директорий по убыванию размера:

du -sh * | sort -hr

Подскажите, уважаемые специалисты, как узнать сначала размер каталога(директории), а потом удалить определенного размера

Лучше заключить $a в кавычки:

du -s *|sort -nr|cut -f 2-|while read a;do du -hs "$a";done

Божешьмой, 4 года в комментах продолжают предлагать пересчитывать размеры дважды, только чтобы сделать циферки читаемыми... Для таких целей есть утилита numfmt:

du --max-depth=1 |sort -nr |numfmt --to=iec

 

cd / && sudo du -s * 2>/dev/null | sort -nr | cut -f 2- | while read a; do sudo du -hs $a 2>/dev/null ; done

Добавить комментарий