我需要一个bash脚本,可以计算FreeBSD上其他目录中的目录。
案件是这样的:
路径为home/myuser/direct
,而不是在此目录中,有20个目录只用一个字母命名,如A B C D E F,依此类推。在每个A目录中,B目录中有许多其他名称不同的目录,例如mydirectory1,mydirectory2等。在mydirectory1里面有不同的文件和目录,我只需要计算mydirectory1下的目录,而不是文件。我想出了这个,但是使用它,我必须为每个目录手动执行此操作:
home/myuser/direct# ls -l A/* | grep ^d | wc -l
而不是B目录我将不得不:
home/myuser/direct# ls -l B/* | grep ^d | wc -l
等等。有没有办法,自动执行此操作,我的意思是将字母A更改为B,依此类推?
P.S,对于混淆感到抱歉,因为英语不是我的第一语言:(答案 0 :(得分:1)
尝试
find * -type d -print | wc -l
答案 1 :(得分:1)
此解决方案假定您需要当前目录中每个文件夹的子文件夹数。如果你想把它们总结为一个值,那就是一个不同的问题......对于文件夹名称的变化,它不是令人难以置信的健壮,但是对于大多数没有奇怪标点符号的情况应该适用:
for D in */; do echo "$D": $(ls -d "$D"*/| wc -l); done
示例输出:
DATA/: 14
LOGS/: 2
PLOTS/: 3
SCRIPTS/: 2
ls: libraries//*/: No such file or directory
libraries/: 0
这是一个抑制空文件夹错误的版本:
for D in */; do echo "$D": $(ls -d "$D"*/ 2>/dev/null |wc -l); done