You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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.txt
    
    • IFS= 保留目录名中的前导/尾随空格
    • -r 禁用反斜杠的转义功能,确保目录名里的反斜杠被正确识别
    • 双引号包裹$dir避免空格拆分参数
  • 方法三:用null字符作为分隔符(通用方案)
    如果目录名包含除空格外的特殊字符(如换行符),可以将换行转换为null字符,再用xargs -0解析:

    cat dirs.txt | tr '\n' '\0' | xargs -0 du -sh
    

    xargs -0会以null字符作为参数分隔符,能完美处理所有特殊字符的文件名。

内容的提问来源于stack exchange,提问作者user1443098

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 12:40:25