代码之家  ›  专栏  ›  技术社区  ›  Dan Monego

Shell脚本:将bash与xargs结合使用

  •  11
  • Dan Monego  · 技术社区  · 16 年前

    find . -name vmware-*.log | xargs rm
    

    但是,当我运行该命令时,它会阻塞所有名称中有空格的文件夹。是否有方法格式化文件路径,以便xargs将其传递给rm quoted或正确转义?

    7 回复  |  直到 16 年前
        1
  •  23
  •   Emil Sit    16 年前

    尝试使用:

    find . -name vmware-*.log -print0 | xargs -0 rm
    

    这会导致find在每个文件名后输出一个空字符,并告诉xargs根据空字符而不是空格或其他标记来分解名称。

        2
  •  9
  •   L.R.    16 年前

    find . -name "vmware-*.log" -exec rm '{}' \;

        3
  •  5
  •   Carl Norum    16 年前

    查看 -0 旗帜 xargs find -print0 你应该做好准备。

    find . -name vmware-*.log -print0 | xargs -0 rm
    
        4
  •  4
  •   ghostdog74    16 年前

    find . -name vmware-*.log -delete
    
        5
  •  1
  •   biegleux piyush    14 年前

    find . -name vmware-*.log | xargs -i rm -rf {}

        6
  •  0
  •   simont basooli    14 年前
    find -iname pattern
    

    使用 -iname

        7
  •  0
  •   Ray    10 年前

    为了避免xargs中的空格问题,我将使用新行字符作为带-d选项的分隔符:

    find . -name vmware-*.log | xargs -d '\n' rm