【问题标题】:list files in terminal with spaces用空格列出终端中的文件
【发布时间】:2011-09-21 16:52:44
【问题描述】:
ls -1 | grep -v images | xargs rm -r

这不会删除其中包含空格的文件。我怎样才能包括它们?当我说 ls 时有没有办法显示转义的空格?

【问题讨论】:

  • find . ! -name '*images*' -type f -print0 | xargs -0 rm -r

标签: linux terminal grep ls


【解决方案1】:

这应该可以解决问题:

ls -1 | grep -v images | xargs -I {} rm -r "{}"

【讨论】:

    【解决方案2】:

    虽然您可以使用ls(1) 来完成这项工作,但我认为更好的方法是改用find(1):

    find . \! -name '*images*' -exec rm -r {} \;
    

    或

    find . \! -name '*images*' -print0 | xargs -0 rm -r
    

    我更喜欢-print0 | xargs -0 方法,因为xargs(1) 只会根据需要生成尽可能多的rm(1) 命令。当您只有 200 个文件时,执行 200 次或执行一次不会有太大区别,但如果您有 10,000 个文件要删除,您真的宁愿只执行 rm(1) 200 或 500 次,而不是全部执行 10,000 次。

    【讨论】:

      【解决方案3】:

      ls 有 -Q 选项来引用它们。然后你可以这样做:

      ls -Q | grep -v images | xargs rm -r
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-11
        • 1970-01-01
        • 2020-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多