【问题标题】:How to find disk size of sub-folders of same name如何查找同名子文件夹的磁盘大小
【发布时间】:2013-11-01 03:08:53
【问题描述】:

假设 Ubuntu 上的目录结构是 /home/f1/a/home/f2/a/home/f3/a/home/f4/a。假设我的目标是了解每个f1f2f3f4 中的文件夹a 的磁盘大小(不是这些文件夹中文件的大小,而是文件夹本身);并在我在/home 时进行。

问题我可以从/home 运行什么shell 命令来获取每个文件夹a 的磁盘大小?

在我的真实示例中,我有 60 个这样的目录(即~/f1/a~/f2/a、...、~/f60/a),因此首选不会发送过多其他信息的命令。

【问题讨论】:

    标签: shell ubuntu terminal command


    【解决方案1】:

    此代码有效:

    for i in `seq 1 60`
    do
        du -ch ~/f$i/a | tail -n 1 | awk -F' ' {'print $1'}
    done
    

    【讨论】:

    • du -ch 是正确答案,但grep total 不是最佳解决方案。考虑tail -n 1,而不是硬编码'total',以防非英语本地。
    • 以上假设有一定数量的文件,即只有 60 个,如果超过 60 个怎么办?
    • @MattGreen 我们可以用read x 得到一个数字,然后用seq 1 $x 替换seq 1 60
    【解决方案2】:

    下面将为您提供文件夹大小的细分以及所有文件夹的总数,无论有多少,只要它们以 f 开头并且位于 /home 中即可

    du -ch /home/f*/a/
    

    输出:

    24K     /home/mgreen/f11/a/
    4.0K    /home/mgreen/f12/a/
    4.0K    /home/mgreen/f61/a/
    32K     total
    

    我认为您正在寻找类似于以下内容的内容,但它可以让您获取每个 /a/ 文件夹的总数,而不是所有文件夹的总数。

    for i in $(ls /home/mgreen |grep 'f[0-9]');do for d in $(ls /home/mgreen/$i|grep "a");do printf "$i$d " ;du -sch /home/mgreen/$i/$d | tail -n 1 | awk '{print $1}';done ;done
    

    其中$i 等于顶级目录f1-100,$d 等于'a' 目录。额外的循环将 $a 分配给一个变量以进行打印。

    输出:

    f11/a/ 24K
    f12/a/ 4.0K
    f61/a/ 4.0K
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-11
      • 2020-08-15
      • 2013-02-17
      • 2018-12-04
      • 2015-08-15
      • 2020-10-17
      • 1970-01-01
      • 2011-04-14
      相关资源
      最近更新 更多