我想列出给定根目录下的目录大小(使用du -hs
)。问题是,如果目录名称有空格,该du
命令会将名称的每个单词作为整个目录名称。
我尝试通过引用输出来解决此问题,xargs
但输出是相同的。
#!/bin/bash
root="$1"
echo "Searching in $root"
for d in $(find $root -maxdepth 1 -type d | xargs -i echo "'{}'")
do
#
# the root directory can take a long time so let's skip it
#
if [ "$d" != "$root" ]
then
echo "Looking at directory $d"
echo $(du -hs "$d")
fi
done
答案1
由于您所描述的问题,它是不建议迭代的输出find
。相反,-exec
如果您的版本可用,您应该使用该选项find
:
find "$root" -maxdepth 1 -type d -exec du -hs {} \;
要排除该$root
目录,您可以添加mindepth
:
find "$root" -mindepth 1 -maxdepth 1 -type d -exec du -hs {} \;