Понеделник, 2008, Септември 8

sdu - sorted du :)


#!/bin/bash
dir=$1
if [ -z "$1" ]
then
dir='.'
fi
find "$dir" -mindepth 1 -maxdepth 1 | perl -ne "s/^/\"/ && s/$/\"/ && print" | xargs du -sm | sort -n
echo "----total----"
du -sh "$dir"


пример:

home South Park # sdu
703 ./Bigger Longer & Uncut
1223 ./season 12 [TVRip]
1962 ./season 10 [DVDRip]
1979 ./season 01 [DVDRip]
2428 ./season 08 [DVDRip]
2449 ./season 11 [TVRip]
2453 ./season 05 [DVDRip]
2457 ./season 09 [DVDRip]
2615 ./season 07 [DVDRip]
2770 ./season 02 [DVDRip]
2786 ./season 03 [DVDRip]
2877 ./season 04 [DVDRip]
2987 ./season 06 [DVDRip]
----total----
29G .
home South Park #


Големината е в MB. Може и директория като аргумент.

4 коментара:

obfuscated каза...

Ееее, Иво, четеш размера на файловете 2 пъти ... добре, че е умно ядрото и повечето работи ще ги е кеширало :)
Като ще е има пърл, направо го напиши цялото на него.

Също можеш да пробваш:

du -sm * | sort -nr ;-)

тия дни го открих :-Ь

infestdead каза...

Е то аз правя du -sm | sort -n ама чекията с find-a и perl-a е да хване .директориите, па ако не те кефи да чете два пъти махни втория du .:)

obfuscated каза...

Погледни звездата в моя вариант, не прави ли, това което искаш ... без цялата oneliner фенщина :)

infestdead каза...

Тз, не хваща .директориите.
ipm@imitov ~ $ du -sm * | sort -nr | wc -l
240
ipm@imitov ~ $ sdu | wc -l
370
ipm@imitov ~ $

Т.е. не хваща .aMule, .mozilla и тн.