【问题标题】:UNIX find : how to deal with paths containing spacesUNIX find:如何处理包含空格的路径
【发布时间】:2011-12-22 12:05:09
【问题描述】:

我有一个带有这一行的 shell 脚本:

rm -rf `find something`

问题是,如果 find 返回带有空格的路径,rm 当然会将空格解释为两个不同路径之间的分隔符,并且命令会失败。

有没有办法告诉find 在它返回的路径周围加上引号或其他方法来解决这个问题?

【问题讨论】:

    标签: shell unix path find


    【解决方案1】:

    为了安全起见,您可以使用

    $ find start_dir -print0 -name something | xargs --null rm -rf
    

    使用 NUL (0) 字符作为文件之间的分隔符。

    【讨论】:

    • xargs --null也可以写成xargs -0
    • -print0-0 选项是 GNU 扩展,因此在某些系统上您需要使用 gfindgxargs 而不是 findxargs
    【解决方案2】:

    find something -exec rm {} \; 但我有点担心...

    【讨论】:

      【解决方案3】:

      你可以这样做:

      find start_dir -name something -print0 | xargs -0 /bin/rm -rf
      

      【讨论】:

      • 第二个如何处理路径中的空格?
      • 它没有;它缺少 findxargs 的空终止符(这很容易修复):find start_dir -name something -print0 | xargs -0 /bin/rm -rf
      【解决方案4】:

      一种稍微快一点的方法(用你想要的任何条件替换“某物”):

      find something -exec rm -rf {} +
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-25
        • 2011-04-13
        • 2010-09-08
        • 1970-01-01
        • 2012-02-26
        • 1970-01-01
        • 2017-02-01
        • 1970-01-01
        相关资源
        最近更新 更多