1. 程式人生 > >Linux下du加強版,靈活快速定位硬碟使用情況,無需安裝

Linux下du加強版,靈活快速定位硬碟使用情況,無需安裝

du命令檢視使用空間,對檔案和目錄磁碟使用的空間的檢視。

du [選項][檔案]
-a或-all 顯示目錄中個別檔案的大小。
-b或-bytes 顯示目錄或檔案大小時,以byte為單位。
-c或--total 除了顯示個別目錄或檔案的大小外,同時也顯示所有目錄或檔案的總和。
-k或--kilobytes 以KB(1024bytes)為單位輸出。
-m或--megabytes 以MB為單位輸出。
-s或--summarize 僅顯示總計,只列出最後加總的值。
-h或--human-readable 以K,M,G為單位,提高資訊的可讀性。
-x或--one-file-xystem 以一開始處理時的檔案系統為準,若遇上其它不同的檔案系統目錄則略過。
-L<符號連結>或--dereference<符號連結> 顯示選項中所指定符號連結的原始檔大小。
-S或--separate-
dirs
顯示個別目錄的大小時,並不含其子目錄的大小。 -X<檔案>或--exclude-from=<檔案> 在<檔案>指定目錄或檔案。 --exclude=<目錄或檔案> 略過指定的目錄或檔案。 -D或--dereference-args 顯示指定符號連結的原始檔大小。 -H或--si 與-h引數相同,但是K,M,G是以1000為換算單位。 -l或--count-links 重複計算硬體連結的檔案。

下面介紹du加強版




echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo "統計目錄下各檔案及目錄的大小"
echo "sh $0 引數1(目錄)"
echo "      引數2 遍歷深度(預設0)"
echo "      引數3 Y/N 是否顯示極小檔案"
echo "統計目錄下各檔案及目錄的大小"

echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

#/bin/bash
# by llhl
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo "統計目錄下各檔案及目錄的大小"
echo "sh $0 引數1(目錄)"
echo "      引數2 遍歷深度(預設0)"
echo "      引數3 Y/N 是否顯示極小檔案"
echo "統計目錄下各檔案及目錄的大小"
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
level=$2
function secho() {
 times=$1
 while [ $times -gt 0 ];
 do
    echo -e "  \c"
    times=$((times - 1))  
 done
}
function showBigFile() {
  result=$( echo $1 | grep "^.*K ")
  if [[  "$result" != "" ]]
  then
     echo -e "\c"
  else
     resultSub=$( echo $1 | grep "^0 ")
     if [[  "$resultSub" != "" ]]
     then
        echo -e "\c"
     else
        echo $1 
     fi
  fi
}
function grepBigFile() {
  result=$( echo $1 | grep $2 )
  if [[  "$result" != "" ]]
  then
     return ""
  else
     return $1 
  fi
}

function echoSize() {
  d_f_size=`du -sh $1`
  if [[ $2 == 'Y' ]]
  then
     echo $d_f_size 
  else
     showBigFile "$d_f_size"
  fi
}

function size() {
 for element in `ls -AXrS $1`
    do  
	if [ $1 == "/" ] 
	then
	  dir_or_file=$1$element
	else
          dir_or_file=$1"/"$element
	fi
        if [ -d $dir_or_file -a $2 -gt 0 ]
        then 
            size $dir_or_file $[$2-1] $3 
        else
	    secho $[$level-$2]	
            echoSize $dir_or_file $3
        fi  
    done
}

function main() {
 size $1 $2 $3
}

main ${1:-'/'} ${2:-0} ${3:-'Y'}
echo ""