Как я получаю размер каталога на командной строке?

Для проверки команду называют с определенной командой, Вы могли перенести ее в сценарии или функции, которая запускает подоболочку с umask обновленный. Вы могли поместить то функциональное определение в свой конфигурационный файл оболочки как .bashrc для bash или .zshrc для zsh.

Что-то как:

brew() (
  umask 002 &&
    command brew "$@"
)
1111
26.08.2017, 00:16
16 ответов

du -sh file_path

Объяснение

  • du ( D ISC U Sage) Команда Оценка использования SAGE_PATH
  • Варианты -SH (из MAN DU ):

      -S, --sumcize
      отображать только общее для каждого аргумента
    
      -h, - читабельный
      Размеры печати в читаемом формате человека (например, 1K 234M 2G)
     

    Чтобы проверить более одного каталога и увидеть общее, используйте du -sch :

      -C, --total
      производить грандиозное общее
     
1550
27.01.2020, 19:27

Просто используйте команду du :

du -sh -- *

предоставит вам накопительное использование диска всех не скрытых каталогов, файлов и т. Д. В текущем каталоге -упроволочный формат.

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

df -h .
335
27.01.2020, 19:27

Команда du показывает использование диска файла.

Опция -H -H показывает результаты в читаемой человеке (например, 4K, 5M, 3G).

du -h (file name)
27
27.01.2020, 19:27

Другие упомянули Du , но я также хотел бы упомянуть NCDU - который является версией NCURSES du И предоставляет интерактивность: вы можете напрямую исследовать иерархию каталогов напрямую и увидеть размеры подкаталогов.

35
27.01.2020, 19:27

На странице «logger man» в названиях объектов:

kern       cannot be generated from user process

Источник: http://man7.org/linux/man-pages/man1/logger.1.html

-121--175976-

Самый простой способ получения таких выходных данных - перенаправить стандартную ошибку в файл. В оболочке это выполняется с помощью 2 > файл . Таким образом, если демон обычно запускается следующим образом:

dump1090 --interactive

Измените его на

dump1090 --interactive 2> /tmp/dumplog

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

dump1090 --interactive > /tmp/dumplog 2>&1
-121--186204-

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

du -hs

Если вы также хотите знать, какие подпапки занимают сколько места на диске?! Эту команду можно расширить до:

du -h --max-depth=1 | sort -hr

, что даст вам размер всех подпапок (уровень 1). Выходные данные будут отсортированы (самая большая папка сверху).

206
27.01.2020, 19:27

Я использую эту команду как root :

sudo ls -1d */ | sudo xargs -I{} du {} -sh && sudo du -sh
10
27.01.2020, 19:27

лично я думаю, что это лучше всего, если вы не хотите использовать ncdu

# du -sh ./*
16
27.01.2020, 19:27
df -h .; du -sh -- * | sort -hr

Это показывает, сколько дискового пространства осталось на текущем диске, а затем говорит, сколько занимает каждый файл/каталог. например,

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2       206G  167G   29G  86% /
115M    node_modules
2.1M    examples
68K     src
4.0K    webpack.config.js
4.0K    README.md
4.0K    package.json
16
27.01.2020, 19:27

Во всех приведенных выше примерах будет указан размер данных на диске (т. Е. Объем дискового пространства для конкретного файла using, который обычно превышает фактический размер файла). В некоторых ситуациях они не дадут вам точного отчета, если данные фактически не хранятся на этом конкретном диске и существуют только ссылки на inode.

В вашем примере вы использовали команду ls -l для одного файла, которая вернула фактический размер файла, а НЕ его размер на диске.

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

du -csbh .
23
27.01.2020, 19:27

Еще один вариант:

du -h --max-dep=1
9
27.01.2020, 19:27

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

find -type f -print0 | xargs -0 stat --print='%s\n' | awk '{total+=$1} END {print total}'
10
27.01.2020, 19:27

Вот функция для вашего примера вывода .bash_aliases

# du with mount exclude and sort
function dusort () {
    DIR=$(echo $1 | sed 's#\/$##')
    du -scxh $(mount | awk '{print $3}' | sort | uniq \
     | sed 's#/# --  exclude=/#') $DIR/* | sort -h
}

:

$ dusort /
...
0       /mnt  
0       /sbin
0       /srv
4,0K    /tmp
728K    /home
23M     /etc
169M    /boot  
528M    /root
1,4G    /usr
3,3G    /var
4,3G    /opt
9,6G    total

для подкаталогов:

$ dusort .
$ dusort /var/log/
10
27.01.2020, 19:27

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

Облегчите себе жизнь и используйте ncdu.

ncdu

Вы получите сводки по папкам, которые легко просматривать.

74
27.01.2020, 19:27

Вы можете использовать

du -sh directory/

и

du -sh filename

чтобы узнать место, занимаемое папкой или файлом.

df -h

покажет использование диска в человекочитаемом формате -h делает это.

Существует также программа на основе gui под названием Disk Usage Analyzer.

6
27.01.2020, 19:27

Вот сценарий POSIX, который будет работать с:

  • Файл
  • Файлы
  • Каталог
  • Каталоги
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

Источник

7
27.01.2020, 19:27

Обратите внимание, что duпечатает место, занимаемое каталогом на носителе, которое обычно больше, чем просто общий размер всех файлов в каталоге, потому что duучитывает размер всей вспомогательной информации, которая хранится. на носителе для организации каталога в соответствии с форматом файловой системы.

Если файловая система является сжимаемой, то duможет выводить даже меньшее число, чем общий размер всех файлов, потому что файлы могут быть внутренне сжаты файловой системой и поэтому они занимают меньше места на носителе, чем просто несжатая информация. они содержат. То же самое, если есть разреженные файлы.

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

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

find. ! -type d -print0 | xargs -r0 stat -c %s | paste -sd+ - | bc

или даже короче:

find. ! -type d -printf '%s\n' | paste -sd+ - | bc

Он просто рекурсивно )рекурсивно суммирует размеры всех файлов, не являющихся каталогами -в каталоге (и его подкаталогах ). Обратите внимание, что для символических ссылок он сообщает размер символической ссылки (, а не файла, на который указывает символическая ссылка ).

7
27.01.2020, 19:27

Теги

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