2016-09-14 63 views
0

我已经在目录上的Linux结构如下:如何找到在目录中的文件的数量递归连同它的目录名的Linux

-dirA 
    -dir1 
     -dirX 
     -dirY 
    -dir2 
     -dirX 
     -dirY 
    -dir2 
     -dirX 
     -dirY 
    -dir2 
     -dirX 
     -dirY 
    -dir2 
     -dirX 
     -dirY 
    -dir2 
     -dirX 
     -dirY 
    . 
    . 
    . 
    . 
    . 
    . 
    . 
    . 
    . 
    -dirn 
     -dirX 
     -dirY 

我想要得到的文件的数量详情如下或任何格式:

加载dirX和dirY中的
dir1 
dirX = count 
dirY = count 

dir2 
dirX = count 
dirY = count 

dir3 
dirX = count 
dirY = count 

...... 
...... 

dirn 
dirX = count 
dirY = count 

注意到这里的文件夹名称相同的内部子目录DIR1,DIR2 ..... DIRN

我用下面的命令,但它给累加结果:

find $DIR -exec stat -c '%F' {} \; | sort | uniq -c | sort -rn 

find . -type f | wc -l 

回答

0

一个简单while循环应该足够

find "$DIR" -type d -print0 | 
    while IFS= read -r -d '' path; do 
     echo -e "$(ls -A -- "$path" | wc -l)\t$path" 
    done 

如果你希望他们按文件数量排序,你可以在命令末尾附加一个| sort -n (紧随done关键字)。

+0

这应该保存为shell脚本并运行 – virendrao

+0

@virendrao如果你愿意,你可以做到这一点。只需用'“$ 1”替换'“$ DIR”'并将其保存为'myscript.sh'并将其作为脚本运行即可。例如'./myscript.sh“/ path/to/directory”'。您也可以直接运行它:只需将目录路径替换为“$ DIR”,并将其粘贴到终端中即可。 – redneb

相关问题