答え1
純粋なksh93ソリューション:
FIGNORE='@(.|..)'
for dir in */; do a=( "$dir"/**/* ); printf "%s\t%s\n" "$dir:" "${#a[*]}"; done
結果/usr/src
:
linux-3.17.7-gentoo/: 561
linux-3.5.7-gentoo/: 517
linux-3.7.10-gentoo/: 505
linux-3.7.9-gentoo/: 513
linux-3.8.13-gentoo/: 551
linux-4.0.5-gentoo/: 1849
答え2
まず、最上位ディレクトリを見つけてから、2番目のクエリを使用して最上位ディレクトリにあるファイルとディレクトリの数を計算できます。
$ for dir in $(find . -maxdepth 1 ! -path . -type d | sort); \
do echo -n "$dir " && find $dir ! -path . | wc -l ; done
./adir 1151
./anotherdir 140
./623de41e44 280
./examples 154
...
答え3
このようなものがあなたの要件を満たしていますか?
このパスは/boot
サンプルデモに使用されます。必要なディレクトリに変更します。
for DIR in $(find /boot/* -maxdepth 1 -type d)
do
printf "%40s: %10d\n" "${DIR}" $(find ${DIR}|wc -l)
done
出力:
/boot/grub: 282
/boot/grub/fonts: 2
/boot/grub/i386-pc: 272
/boot/grub/locale: 4
/boot/lost+found: 1
答え4
以下の小さなループは、すべてのファイル数をリストします。(シンボリックリンクを除く)そのサブディレクトリは、.
サブディレクトリと同じファイルシステムに存在します。
for d in ./* ./.[!.]* ./..?*
do ! [ -h "$d" ] &&
cd "$d" 2>&3 || continue
printf "%s:\t" "$d"
find .//. -xdev -depth ! -type l |
grep -c '^\.//\.'
cd ..
done 3>/dev/null