Использование ls для вывода списка каталогов и их общего размера - PullRequest
721 голосов
/ 19 июня 2009

Можно ли использовать ls в Unix для отображения общего размера подкаталога и всего его содержимого, в отличие от обычного 4K, который (я предполагаю) является просто самим файлом каталога? И.Е.

total 12K
drwxrwxr-x  6 *** *** 4.0K 2009-06-19 10:10 branches
drwxrwxr-x 13 *** *** 4.0K 2009-06-19 10:52 tags
drwxrwxr-x 16 *** *** 4.0K 2009-06-19 10:02 trunk

После поиска страниц справочника я выхожу пустым.

Ответы [ 25 ]

4 голосов
/ 25 января 2017

Мне нравится это

update : предыдущий мне не понравился, поскольку он не отображал файлы в текущем каталоге, а только перечислял каталоги.

Пример вывода для /var в Ubuntu:

sudo du -hDaxd1 /var | sort -h | tail -n10

4.0K    /var/lock
4.0K    /var/run
4.0K    /var/www
12K     /var/spool
3.7M    /var/backups
33M     /var/log
45M     /var/webmin
231M    /var/cache
1.4G    /var/lib
1.7G    /var
3 голосов
/ 26 сентября 2015
du -S

du имеет еще одну полезную опцию: -S, --separate-dirs telling du не включает размер подкаталогов - в некоторых случаях удобно.

Пример 1 - показывает только размеры файлов в каталоге:

du -Sh  * 
3,1G    10/CR2
280M    10

Пример 2 - показывает размеры файлов и подкаталогов в каталоге:

du -h  * 
3,1G    10/CR2 
3,4G    10
3 голосов
/ 28 мая 2014

Это отличные предложения, но я использую:

du -ksh * | sort -n -r

-ksh обеспечивает перечисление файлов и папок в удобочитаемом формате, в мегабайтах, килобайтах и ​​т. Д. Затем вы сортируете их по числовым значениям и переворачиваете, чтобы на первом месте были большие.

Единственным недостатком этой команды является то, что компьютер не знает, что гигабайт больше, чем мегабайт, поэтому он будет сортировать только по номерам, и вы часто будете находить списки, подобные этому:

120K
12M
4G

Только будьте осторожны, чтобы посмотреть на устройство.

Эта команда также работает на Mac (тогда как sort -h не работает, например).

3 голосов
/ 03 марта 2016

ду-см * | сортировать -nr

Выход по размеру

3 голосов
/ 19 июня 2009

посмотрите на du команду для этого

2 голосов
/ 05 января 2016

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

Может случиться, что размер файлов будет разным, например, сравнивая один и тот же каталог на локальном жестком диске и запоминающем устройстве USB. Я использую следующий скрипт, в том числе ls, для суммирования размера каталога. Результат в байтах с учетом всех подкаталогов.

echo "[GetFileSize.sh] target directory: \"$1\""

iRetValue=0

uiLength=$(expr length "$1")
if [ $uiLength -lt 2 ]; then
  echo "[GetFileSize.sh] invalid target directory: \"$1\" - exiting!"
  iRetValue=-1
else
  echo "[GetFileSize.sh] computing size of files..."

  # use ls to compute total size of all files - skip directories as they may
  # show different sizes, depending on block size of target disk / file system
  uiTotalSize=$(ls -l -R $1 | grep -v ^d | awk '{total+=$5;} END {print total;}')
  uiLength=$(expr length "$uiTotalSize")
  if [ $uiLength -lt 1 ]; then
    uiTotalSize=0
  fi
  echo -e "[GetFileSize.sh] total target file size: \"$uiTotalSize\""

fi

exit "$iRetValue"
2 голосов

ncdu медсестер du

Эта удивительная утилита CLI позволяет легко находить большие файлы и каталоги в интерактивном режиме.

Например, из дерева известного проекта мы делаем:

sudo apt-get install ncdu
ncdu

Итог свой:

enter image description here

Затем я вхожу вниз и вправо на клавиатуре, чтобы перейти в папку /drivers, и вижу:

enter image description here

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

«Общее использование диска» и «Кажущийся размер» аналогичны du, и я объяснил это по адресу: Почему вывод `du` часто так сильно отличается от` du -b`

Домашняя страница проекта: https://dev.yorhel.nl/ncdu

Похожие вопросы:

Протестировано в Ubuntu 16.04.

1 голос
/ 25 августа 2015

Некоторое время я использовал Nautilus (на рабочем столе Gnome на RHEL 6.0) для удаления файлов из моей домашней папки вместо использования команды rm в bash. В результате общий размер отображается как

du -sh

не соответствует сумме использования диска каждого подкаталога, когда я использовал

du -sh *

Мне потребовалось некоторое время, чтобы понять, что Nautilus отправляет удаленные файлы в свою папку «Корзина», и эта папка не указана в команде du -sh *. Итак, просто хотел поделиться этим, на случай, если кто-то столкнулся с той же проблемой.

1 голос
/ 11 апреля 2014

Чтобы рекурсивно отобразить размеры файлов и подкаталогов текущего каталога:

du -h .

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

du -h --max-depth=1 .
1 голос
/ 10 февраля 2016

Хм, лучше всего использовать эту команду:

du -h -x / | sort -hr >> /home/log_size.txt

Тогда вы сможете получить папки всех размеров по всему вашему серверу. Легко помочь вам найти самые большие размеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...