我正在學習bash腳本並編寫了一個腳本來計算作爲參數提供的目錄中的文件和目錄。我的工作方式對我來說似乎很奇怪,我想知道是否有一種更簡單的方法。使用shell腳本計算文件和目錄
我已經註釋掉了可以正常工作的代碼,但是將其留作比較。我試圖讓for
環回工作,而不是使用if
語句來檢測給定位置中的項目是文件還是目錄。
編輯:我剛剛發現註釋代碼計算給定位置的子目錄中的所有文件和目錄!有沒有什麼辦法來防止這種情況,只計算給定位置的文件和目錄?
#!/bin/bash
LOCATION=$1
FILECOUNT=0
DIRCOUNT=0
if [ "$#" -lt "1" ]
then
echo "Usage: ./test2.sh <directory>"
exit 0
fi
#DIRS=$(find $LOCATION -type d)
#FILES=$(find $LOCATION -type f)
#for d in $DIRS
#do
# DIRCOUNT=$[$DIRCOUNT+1]
#done
#for f in $FILES
#do
# FILECOUNT=$[$FILECOUNT+1]
#done
for item in $LOCATION
do
if [ -f "$item" ]
then
FILECOUNT=$[$FILECOUNT+1]
elif [ -d "$item" ]
then
DIRCOUNT=$[$DIRCOUNT+1]
fi
done
echo "File count: " $FILECOUNT
echo "Directory count: " $DIRCOUNT
出於某種原因,for
-loop的輸出,無論在哪裏我點位置,總是返回:
File count: 0 , Directory count: 1
如果文件名中出現空格,則整個腳本都會中斷。正如你在學習,我的第一個建議是:使用更多的行情! –
另一評論:我可以告訴你,學習bash的來源已經過時,並沒有顯示良好的做法。 –
在文件名擴展考慮閱讀:http://bash.cyberciti.biz/bash-reference-manual/Filename-Expansion.html – hovanessyan