我试图弄清楚共享文件夹中某些子目录的大小,并且想知道是否存在一个“单一代码”可以做到这一点(对于你们所有人疯狂的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
很重要,因为可能会出现权限问题,因此我们不想看到错误。我也想看到整个路径,这就是为什么
有人知道这样做的创造性吗?我认为find
和awk
在某种程度上结合起来可以生成完成此任务所需的一个班轮。
答案 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/ - /'