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

A better way of getting sizes of subdirectories

我试图计算共享文件夹中某些子目录的大小,并且想知道是否有 'one-liner' 可以做到这一点(对于你们这些疯狂的 awk 家伙)。 .

我的情况的一个小问题是我可能没有对某些子文件夹的权限,因此目录大小将是最大努力,因为我们可能会收到 'permission denied' 响应递归命令。

这是我想出的:

#!/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 在某种程度上结合可以生成完成此操作所需的一个衬垫。

如果你需要的是完整路径那么你可以

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/ - /'