• # bash

    Posté par . En réponse au message Traquer le mangeur de disque. Évalué à 4.

    Perso j'ai ça dans mon bazar d'environnement :
    #------------ prettysize: format a bytes count --------
    prettysize() {
    	local suffix div result
    	if [ 1ドル -lt 1024 ]; then
    		div=1 ; suffix="B "
    	elif [ 1ドル -lt 1048576 ]; then
    		div=1024 ; suffix="KB"
    	elif [ 1ドル -lt 1073741824 ]; then
    		div=1048576 ; suffix="MB"
    	else
    		div=1073741824 ; suffix="GB"
    	fi
    	result=$(echo -e "scale=1 \n1ドル/$div \nquit" | bc)
    	result="${result} ${suffix}"
    	while [ ${#result} -lt 9 ] ; do
    		result=" ${result}"
    	done
    	echo "${result}"
    }
    #-------- sdu: sorted "du -sh" --------
    sdu () {
    	local dir dirsize subpath
    	local totalsize=0
    	if [ "$#" == "0" ]; then
    		dir='./'
    	else
    		dir="${1%/}/"
    	fi
    	du -sb "$dir"* | sort -n | \
    		{ read dirsize subpath
    		 while [ -n "$subpath" ] ; do
    			 echo " $(prettysize $dirsize) ${subpath}"
    			 let "totalsize += dirsize"
    			 read dirsize subpath
    		 done
    		 local total="$(prettysize $totalsize) ${dir}"
    		 echo "-${total//?/-}-"
    		 echo " ${total}"
    		}
    }
    
    Ce qui me permet d'aller à la pêche au gros comme ça :
    % sdu /usr
     9 B /usr/doc
     9 B /usr/man
     10 B /usr/info
     10 B /usr/tmp
     1009.3 KB /usr/local
     2.8 MB /usr/i686-pc-linux-gnu
     3.9 MB /usr/libexec
     15.4 MB /usr/sbin
     21.4 MB /usr/games
     25.6 MB /usr/qt
     44.6 MB /usr/kde
     71.4 MB /usr/X11R6
     72.7 MB /usr/include
     294.7 MB /usr/bin
     1.0 GB /usr/src
     1.3 GB /usr/lib
     2.1 GB /usr/share
    -------------------
     5.0 GB /usr/