一种获取子目录大小的更好方法

时间:2019-02-01 13:32:04

标签: bash awk find directory-structure

我试图弄清楚共享文件夹中某些子目录的大小,并且想知道是否存在一个“单一代码”可以做到这一点(对于你们所有人疯狂的awk家伙)... < / p>

一个困扰我的情况是我可能没有某些子文件夹的权限,因此目录大小将是最大的努力,因为我们可能会获得对递归命令的“权限被拒绝”响应。

这是我想出的:

#!/bin/bash
DIR=/my/shared/folder/*

for d in $DIR
do
    if [ -d $d ]
    then
        dirsize=$(du -sh $d 2>/dev/null | cut -f1)
        echo "$dirsize - $d"
    fi
done

2>/dev/null很重要,因为可能会出现权限问题,因此我们不想看到错误。我也想看到整个路径,这就是为什么

有人知道这样做的创造性吗?我认为findawk在某种程度上结合起来可以生成完成此任务所需的一个班轮。

1 个答案:

答案 0 :(得分:1)

如果您需要的是完整路径,则可以

du -hs /my/shared/folder/*/

如果您想抑制输出中的错误:

du -hs /my/shared/folder/*/ 2>/dev/null

正如Socowi所指出的,如果您希望输出用短划线而不是制表符分隔,则可以使用sed对其进行操作:

du -hs /my/shared/folder/*/ 2>/dev/null | sed 's/\t/ - /'