私は基本的にやって2つの異なるスクリプトを持っていながら、同じ:現在のディレクトリ内のサブディレクトリをカウント:bashの声明
c=0
ls -l | grep "^d" | while read zeile
do
c=`expr $c + 1`
echo $c
done
echo "Subdirs: $c"
と
私の問題があるc=0
while read zeile
do
c=`expr $c + 1`
echo $c
done < <(ls -l | grep "^d")
echo "Subdirs: $c"
、その最初のバージョンでは、 " c "はwhileループが終了した後に値を失うようです。なぜこれが起こっている
出力
1)
1
2
3
Subdirs: 0
2)
1
2
3
Subdirs: 3
はあなたの誰もが、私には説明できますか?最初のケースで予め で
おかげアレックス
また、 'findを使用することもできます。 -maxdepth 1 -type d | wc -l'でカウントを取得します(現在のディレクトリもカウントされますが)。 '-maxdepth 1'オプションを省略すると、サブディレクトリもカウントされます。 –
@chorobaは正解ですが、一般にファイルを数えるには、 'count = $(find -printf x | wc -c)'をお勧めします。 – l0b0