我正在尝试获取文件夹每个目录中的目录数。
基本上我想进入给定目录中的每个文件夹,然后运行'ls -l | wc -l'
假设我在具有以下结构的目录中:
├── sq1
│ ├── 12
│ ├── 123
│ └── 1234
├── sq2
│ ├── 1
│ ├── 123
│ ├── 1234
│ └── 345
├── sq3
我希望我的输出类型为:
sq1 3
sq2 4
sq3 0
我试过了:
find -maxdepth 1 -type d -exec find {} -maxdepth 1 -type d \;
但是列出了一切。我需要单独计算。我该怎么做?我正在运行csh。
非常感谢
答案 0 :(得分:1)
ls
utillity在第二列中打印出一个指向debotey的链接数。该数字是子目录的数量。还计算了两个目录.
和..
。它们位于每个目录中。所以你不能从该值中减去2
:
$ ls -ld */ | awk '$9{print $9" "$2-2}'
sq1/ 3
sq2/ 4
sq3/ 0
或使用stat
utillity:
$ LC_ALL=C stat -c "%F %n %h" * | awk '$1=="directory"{print $2" "$3-2}'
sq1 3
sq2 4
sq3 0