【问题标题】:How to find number of files in directory recursively along with its directory name linux如何递归查找目录中的文件数量及其目录名称linux
【发布时间】:2017-01-21 22:26:01
【问题描述】:

我在 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

【问题讨论】:

    标签: linux


    【解决方案1】:

    一个简单的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 关键字之后)。

    【讨论】:

    • 是否应该保存为shell脚本并运行
    • @virendrao 如果你愿意,你可以这样做。只需将"$DIR" 替换为"$1" 并将其保存为myscript.sh 并作为脚本运行即可。例如./myscript.sh "/path/to/directory"。也可以直接运行:只需将"$DIR"替换为目录路径,粘贴到终端即可。
    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    相关资源
    最近更新 更多