का उपयोग कर फाइलों और निर्देशिकाओं की गणना करें मैं बैश स्क्रिप्टिंग सीख रहा हूं और निर्देशिका के रूप में दी गई निर्देशिका में फ़ाइलों और निर्देशिकाओं की गणना करने के लिए एक स्क्रिप्ट लिखी है। मेरे पास यह एक तरह से काम कर रहा है जो मेरे लिए अजीब लगता है और सोच रहा हूं कि ऐसा करने का एक आसान तरीका है या नहीं।शैल स्क्रिप्ट
मैंने उस कोड को टिप्पणी की है जो काम करेगा, लेकिन इसे तुलना के रूप में छोड़ दिया। मैं for
-loop काम करने की कोशिश कर रहा हूं, इसके बजाय 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
आपका पूरा स्क्रिप्ट टूट गया है। जैसे ही आप झुका रहे हैं, मेरी पहली सलाह है: अधिक उद्धरणों का उपयोग करें! –
एक और टिप्पणी: मैं बता सकता हूं कि बैश सीखने के लिए आपके स्रोत पुराने हैं और अच्छे अभ्यास नहीं दिखाते हैं। –
फ़ाइल नाम विस्तार पर पढ़ने पर विचार करें: http://bash.cyberciti.biz/bash-reference-manual/Filename-Expansion.html – hovanessyan