如何以递归方式查找目录中的文件数及其目录名linux

时间:2016-09-14 07:37:44

标签: linux

我在linux上的目录中有以下结构:

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

我希望获得有关文件数量的详细信息,如下所示:

dir1
dirX = count
dirY = count

dir2
dirX = count
dirY = count

dir3
dirX = count
dirY = count

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

dirn
dirX = count
dirY = count

注意这里dirX和dirY的文件夹名称在子目录dir1,dir2 ..... dirn

内是相同的

我使用了以下命令,但它给出了累积的结果:

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

和这个

find . -type f | wc -l

1 个答案:

答案 0 :(得分: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关键字后面)。