csh管道输出的find命令

时间:2015-01-28 10:19:11

标签: shell terminal csh

我正在尝试获取文件夹每个目录中的目录数。

基本上我想进入给定目录中的每个文件夹,然后运行'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。

非常感谢

1 个答案:

答案 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