Так как whatsmyip.org и ifconfig.me были уже упомянуты:
curl -s icanhazip.com
Если у Вас есть GNU coreutils (распространенный в большинстве дистрибутивов Linux), можно использовать
du -sh -- * | sort -h
-h
опция говорит sort
то, что вход является человекочитаемым форматом (число с единицей; на основе 1024 так, чтобы 1023 считался меньше, чем 1K, который, оказывается, соответствует что GNU du -h
делает).
Эта опция была добавлена к GNU Core Utilities 7.5 в августе 2009.
Примечание:
При использовании более старой версии MAC OSX необходимо установить coreutils с
brew install coreutils
, затем используйтеgsort
как общедоступная заменаsort
.Более новые версии macOS (проверенный на Мохаве) поддержка
sort -h
исходно.
Вот то, что я использую на Ubuntu 10.04, CentOS 5.5, FreeBSD и Mac OS X.
Я одолжил идею у www.geekology.co.za/и earthinfo.org, а также печально известных уток от "Взломов Сервера Linux" O'Reilly. Я все еще адаптирую его к своим потребностям. Это - все еще происходящая работа (Как в, я работал над этим на поезде этим утром.):
#! /usr/bin/env bash
ducks () {
du -cks -x | sort -n | while read size fname; do
for unit in k M G T P E Z Y; do
if [ $size -lt 1024 ]; then
echo -e "${size}${unit}\t${fname}"
break
fi
size=$((size/1024))
done
done
}
ducks > .ducks && tail .ducks
Вот вывод:
stefan@darwin:~ $ ducks
32M src
42M .cpan
43M .macports
754M doc
865M Work
1G .Trash
4G Library
17G Downloads
30G Documents
56G total
stefan@darwin:~ $
ducks
, и затем chmod a+x ducks
и затем используйте ./ducks
выполнять его? Затем я только вижу общее использование диска, и на Mac OS X и на Ubuntu 2014-10. Я также пытался поместить ducks() { ...}
определение в .bashrc
и затем используйте ducks
для выполнения это, и то же самое на Mac OS X, только видит общий итог
– nopole
23.04.2015, 10:20
Если Вы не имеете sort -h
можно сделать это:
du -sh * | sed 's/\([[:digit:]]\)\t/\1B\t/' | sed 's/\(.\t\)/\t\1/' | sed 's/G\t/Z\t/' | sort -n -k 2d,2 -k 1n,1 | sed 's/Z\t/G\t/'
Это получает список du, разделяет суффикс и виды с помощью этого. С тех пор нет никакого суффикса для <1K, первый sed добавляет B (для байта). Второй sed добавляет разделитель между цифрой и суффиксом. Третий sed преобразовывает G в Z так, чтобы это было больше, чем M; если у Вас есть файлы терабайта, необходимо будет преобразовать G в Y и T к Z. Наконец, мы сортируем по двум столбцам, затем мы заменяем суффикс G.
Этот небольшой сценарий Perl добивается цели. Сохраните его как duh
(или независимо от того, что Вы хотите), и назовите его с duh /dir/*
#!/usr/bin/perl -w
use strict;
my @line;
sub to_human_readable {
my ($number) = @_;
my @postfix = qw( k M G T P );
my $post;
my $divide = 1;
foreach (@postfix) {
$post = $_;
last if (($number / ($divide * 1024)) < 1);
$divide = $divide * 1024;
}
$number = int($number/$divide + 0.5);
return $number . $post;
}
sub trimlengthright {
my ($txt, $len) = @_;
if ( length($txt) >= $len ) {
$txt = substr($txt,0,$len - 1) . " ";
} else {
$txt = $txt . " " x ($len - length($txt));
}
return $txt;
}
sub trimlengthleft {
my ($txt, $len) = @_;
if ( length($txt) >= $len ) {
$txt = substr($txt,0,$len - 1) . " ";
} else {
$txt = " " x ($len - length($txt)) . $txt;
}
return $txt;
}
open(DF,"du -ks @ARGV | sort -n |");
while (<DF>) {
@line = split;
print &trimlengthleft(&to_human_readable($line[0]),5)," "; # size
print &trimlengthright($line[1],70),"\n"; # directory
}
close DF;
Если у Вас нет последней версии GNU coreutils, можно звонить du
без -h
получить поддающийся сортировке вывод и произвести человечески-благоприятный вывод с небольшой постобработкой. Это имеет преимущество работы даже если Ваша версия du
не имеет -h
флаг.
du -k | sort -n | awk '
function human(x) {
if (x<1000) {return x} else {x/=1024}
s="kMGTEPZY";
while (x>=1000 && length(s)>1)
{x/=1024; s=substr(s,2)}
return int(x+0.5) substr(s,1,1)
}
{gsub(/^[0-9]+/, human($1)); print}'
Если Вы хотите суффиксы SI (т.е. кратные числа 1 000, а не 1024), изменяетесь от 1024 до 1 000 в while
тело цикла. (Обратите внимание, что это 1000 в условии предназначается, так, чтобы Вы добрались, например. 1M
вместо 1000k
.)
Если Ваш du
имеет опцию к размерам дисплея в байтах (например. -b
или -B 1
— обратите внимание, что это может иметь побочный эффект подсчета фактических размеров файла, а не использования диска), добавьте пространство к началу s
(т.е. s=" kMGTEPYZ";
), или добавить if (x<1000) {return x} else {x/=1024}
в начале human
функция.
Отображение десятичной цифры для чисел в диапазоне 1–10 оставляют как осуществление читателю.
Попытайтесь использовать флаг-k для блоков количества 1K вместо этого использования человекочитаемого. Затем Вы имеете общую единицу и можете легко сделать числовой вид.
du -ck | sort -n
Вы не делаете explictly требуют человеческих единиц, но если Вы сделали, затем существует набор способов сделать это. Многие, кажется, используют 1K метод блока выше и затем выполняют второй вызов к du.
https://serverfault.com/questions/62411/how-can-i-sort-du-h-output-by-size
Если Вы хотите видеть, что добавленные единицы КБ, используют:
du -k | sed -e 's_^\([0-9]*\)_\1 KB_' | sort -n
Сойдите с ума с этим сценарием -
$du -k ./* |
> sort -nr |
> awk '
> {split("KB,MB,GB",size,",");}
> {x = 1;while ($1 >= 1024) {$1 = $1 / 1024;x = x + 1} $1 = sprintf("%-4.2f%s", $1, size[x]); print $0;}'
К виду размером в МБ
du --block-size=MiB --max-depth=1 path | sort -n
du -h
(человекочитаемый вывод) отсортированный численно. Вы не предоставляете ответ на это. Можно также хотеть связать учетную запись UNIX-SE с другими учетными записями, которые Вы имеете на других сайтах SE.
– Tonin
11.03.2013, 13:58
Этот сценарий еще легче:
for i in G M K; do du -h -d1 / | grep [0-9]$i | sort -n; done
Этот обрабатывает имена файлов пробелы или апострофы, и работает на системах, которые не поддерживают xargs -d
или сортировка -H
:
du -s * | sort -n | cut -f2 | tr '\n' '\0' | xargs -0 -I {} du -sh "{}"
который приводит к:
368K diskmanagementd
392K racoon
468K coreaudiod
472K securityd
660K sshd
3.6M php-fpm
Поскольку Mac OS X не имеет опции -h
для сортировки -h
, то я попробовал и узнал sed
и awk
с первой попытки:
du -sk * | sort -g | awk '{ numBytes = $1 * 1024; numUnits = split("B K M G T P", unit); num = numBytes; iUnit = 0; while(num >= 1024 && iUnit + 1 < numUnits) { num = num / 1024; iUnit++; } $1 = sprintf( ((num == 0) ? "%6d%s " : "%6.1f%s "), num, unit[iUnit + 1]); print $0; }'
это длинная очередь. Расширенная, так и есть:
du -sk * | sort -g | awk '{
numBytes = $1 * 1024;
numUnits = split("B K M G T P", unit);
num = numBytes;
iUnit = 0;
while(num >= 1024 && iUnit + 1 < numUnits) {
num = num / 1024;
iUnit++;
}
$1 = sprintf( ((num == 0) ? "%6d%s " : "%6.1f%s "), num, unit[iUnit + 1]);
print $0;
}'
Я попробовал его на Mac OS X Mavericks, Yosemite, Ubuntu 2014-04 с awk
по умолчанию awk
(что означает nawk
, потому что оба awk
и nawk
указывают на /usr/bin/mawk
) или gawk, и все они работали.
Вот пример вывода на Mac:
0B bar
0B foo
4.0K wah
43.0M Documents
1.2G Music
2.5G Desktop
4.7G Movies
5.6G VirtualBox VMs
9.0G Dropbox
11.7G Library
21.2G Pictures
27.0G Downloads
вместо du -sk *
я увидел в ответе @Stefan, где также отображается итоговая сумма, и без обхода точки монтирования файловой системы, используя du -skcx *
Это отсортирует вывод в порядке убывания размера:
du -sh /var/* | sort -k 1rn
Это отсортирует вывод в порядке возрастания размера:
du -sh /var/* | sort -k 1n
PS: это можно использовать для сортировки по любому столбцу, но значения столбца должны быть в том же формате
Проверено на Solaris!
du -kh | sort -nk1 | grep [0-9]K && du -kh | sort -nk1 | grep [0-9]M && du -kh | sort -nk1 | grep [0-9]G
Это рекурсивно выведет размеры всех каталогов, внизу будет самый большой каталог в гигабайтах, а вверху самый маленький в килобайтах.
В отсутствие GNU sort -h
это должно работать в большинстве сред UNIX:
join -1 2 -2 2 <(du -sk /dir/* 2>/dev/null | sort -k2,2) <(du -sh /dir/* 2>/dev/null | sort -k2,2) | sort -nk2,2 | awk '{ print $3 "\t" $1 }'
Команда:
du -ah. | sort -k1 -h | tail -n 50
Пояснение:
du -ah.
sort -k1 -h | tail -n 50
-r
к виду, если Вы хотите большие наверху апач – xenoterracide 09.12.2010, 14:52coreutils
черезbrew
и добавьте папку мусорного ведра к ВашемуPATH
в Ваш емкостно-резистивный файл, и-h
должно быть доступным. – kenorb 05.03.2015, 16:20tail
команда для наблюдения пожирателей ресурсов. – SDsolar 17.08.2017, 11:26