答案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
您可以首先找到顶级目录,然后使用第二个查找来计算顶级目录中的文件和目录的数量:
$ 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