删除查找输出中文件名中的空格

删除查找输出中文件名中的空格

我想列出给定根目录下的目录大小(使用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 {} \;

相关内容