標籤:style blog color 使用 檔案 for div 代碼
要想統計一個目錄中的普通檔案、目錄檔案以及其他檔案的個數,就要事Crowdsourced Security Testing道這個檔案夾中有哪些檔案。然後,通過就可以判斷這些檔案哪些是普通檔案、目錄檔案還是其他什麼檔案類型了。其實要想知道這個檔案夾中有哪些檔案,通過ls命令就可以知道了。
然後,在shell指令碼中通過for迴圈得以實現。關鍵就在於,如果得到該檔案夾中全部檔案的檔案名稱,這個時候就可以使用$(……)來實現。具體代碼:
#! /bin/bashlet "dir_number=0"let "file_number=0"let "other_file=0"for file in $(ls $1)do if [ -d $file] then let "dir_number+=1" elif [ -f $file ] then let "file_number+=1" else then let "other_file+=1" fidoneecho "directoy number is $dir_number"echo "file numberis $file_number"echo "other file number is $other_number"
以上是通過for迴圈來實現統計各類檔案的代碼實現,那麼,如果想要使用while迴圈來實現,代碼應該怎麼編寫呢?其實,關鍵區段與for迴圈是一樣的,不一樣的是如何判斷程式的退出。程式碼為:
#! /bin/bashlet "dir_number=0"let "file_number=0"let "other_file=0"set $(ls $1)while [ "$1" != "" ]do if [ -d $1] then let "dir_number+=1" elif [ -f $1 ] then let "file_number+=1" else then let "other_file+=1" fi shiftdoneecho "directoy number is $dir_number"echo "file numberis $file_number"echo "other file number is $other_number"
其中的關鍵是使用set命令與$(……)共同使用,結果就可以把ls命令結果也就是各個檔案。看成是不同的域,然後通過$1與shift命令共同使用,就可以判斷目錄中的全部檔案,從而可以統計全部檔案中各種類型的格式。
例外,在while迴圈中,除了使用以上方式外,還可以使用冒號命令,冒號命令可以簡化邏輯,相當於TRUE的一個別名。另外,由於冒號命令是內建命令,其運行速度要比true快。具體實現代碼為:
#! /bin/bashlet "dir_number=0"let "file_number=0"let "other_file=0"set $(ls $1)while :do if [ "$1" == "" ] then break fi if [ -d $1] then let "dir_number+=1" elif [ -f $1 ] then let "file_number+=1" else then let "other_file+=1" fi shiftdoneecho "directoy number is $dir_number"echo "file numberis $file_number"echo "other file number is $other_number"
以上就是統計目錄中各類檔案個數的具體實現代碼。