Со стандартными доступными инструментами:
Перечислять лучшие 10 самых больших файлов из текущего каталога: du . | sort -nr | head -n10
Перечислять самые большие каталоги из текущего каталога: du -s * | sort -nr | head -n10
ОБНОВИТЕ В эти дни, я обычно использую больше удобочитаемой формы (как Jay Chakra объясняет в другом ответе, и кончите | head -n10
, просто позвольте ему прокрутить от экрана. Последняя строка имеет самый большой файл или каталог (дерево).
Иногда, например, когда у Вас есть много точек монтирования в текущем каталоге вместо использования -x
или несколько --exclude=PATTERN
, более удобно смонтировать файловую систему на неиспользованной точке монтирования (часто /mnt
) и работа оттуда.
Обратите внимание, это при работе с большим (NFS) объемов, можно вызвать существенную нагрузку на бэкенд устройства хранения данных (файловый сервер) при выполнении du
по большому количеству (sub) каталогов. В этом случае лучше рассмотреть установку quota
на объеме.
Если Вы имеете GNU awk
вот острота, в которой Вы нуждаетесь:
$ awk '{n=split($2,ip,".");if(n==4)print $0;else a[$2]=$0}END{n=asorti(a,b);for(i=1;i<=n;i++)print a[b[i]]}' file
/etc/backup/app 172.1.120.12 172.110.120.98
/etc/backup/app 172.1.120.1 172.110.120.7
/var/log/df 193.23.2.111 193.23.2.159
/etc/backup/app 172.1.120 172.110.120
/etc/backup/app 192.1.120 192.120.120
/var/log/df 193.23.2 193.23.2
awk '{printf "%s.,%s\n", $2, $0}' | \
sed -E -e 's/^(([0-9]+\.){4}),/0.\1,/' -e 's/^(([0-9]+\.){3}),/1.\1,/' | \
sort -t. -k 1,1 -k 3,3 | \
sed -E -e 's/^[^,]+,//'`
Идея к:
sed
предварительно ожидать некоторое значение, которое зависит от количества октетов в IP-адресе (я использовал 0 для 4 октетов и 1 для 3 октетов),cat <(awk '{if($2~/[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/){print $0}}' test.txt | sort -k 2) <(awk '{if($2~/^[0-9]*\.[0-9]*\.[0-9]*$/){print $0}}' test.txt | sort -k 2)