在RHEL中如何从含空格目录的文件执行du命令?
解决带空格目录名的
du -sh批量执行问题 当目录名包含空格时,默认xargs会按空格拆分参数,导致命令执行失败,以下几种方法可以解决这个问题:
方法一:使用
xargs的-d指定换行分隔符
利用-d '\n'参数告诉xargs以换行符作为目录名的分隔符,而非默认的空格:cat dirs.txt | xargs -d '\n' du -sh注意:该选项需要GNU xargs支持,部分老旧系统可能没有。
方法二:用
while循环逐行读取目录名
这种方法兼容性更强,不受xargs版本限制,同时能处理开头/结尾带空格的目录名:while IFS= read -r dir; do du -sh "$dir" done < dirs.txtIFS=保留目录名中的前导/尾随空格-r禁用反斜杠的转义功能,确保目录名里的反斜杠被正确识别- 双引号包裹
$dir避免空格拆分参数
方法三:用
null字符作为分隔符(通用方案)
如果目录名包含除空格外的特殊字符(如换行符),可以将换行转换为null字符,再用xargs -0解析:cat dirs.txt | tr '\n' '\0' | xargs -0 du -shxargs -0会以null字符作为参数分隔符,能完美处理所有特殊字符的文件名。
内容的提问来源于stack exchange,提问作者user1443098
相关产品推荐
相关产品推荐

