获取子目录大小的更好方法
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
很重要,因为可能会出现权限问题,所以我们不想看到错误。我也想看到整个路径,这就是为什么
有人知道更有创意的方法吗?我想 find
与 awk
在某种程度上结合可以生成完成此操作所需的一个衬垫。
如果你需要的是完整路径那么你可以
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/ - /'
我试图计算共享文件夹中某些子目录的大小,并且想知道是否有 '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
很重要,因为可能会出现权限问题,所以我们不想看到错误。我也想看到整个路径,这就是为什么
有人知道更有创意的方法吗?我想 find
与 awk
在某种程度上结合可以生成完成此操作所需的一个衬垫。
如果你需要的是完整路径那么你可以
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/ - /'