【问题标题】:Deleting files ending with 2 digits in linux在linux中删除以2位数字结尾的文件
【发布时间】:2018-02-15 17:53:57
【问题描述】:

在我的文件夹中,我想删除以 2 位数字(10、11、12 等)结尾的文件

我试过的是

rm [0-9]*

但是好像不行。

这样做的正确语法是什么?

【问题讨论】:

  • rm -r *[0-9] 应该可以工作。
  • rm -i *[0-9][0-9] 只要您不介意删除以三位数结尾的文件即可; rm -i *[!0-9][0-9][0-9] 如果您确实介意删除三位数文件,并且 Bash 历史扩展不会妨碍您。
  • @AshishSrivastavaL 也会删除仅以一位数字结尾的文件
  • @JonathanLeffler 你是对的,它有效
  • @JonathanLeffler 你是对的。但是使用*[0-9]{2} 之类的东西怎么样?

标签: linux bash glob


【解决方案1】:

将 cmets 转换为答案。

您的要求有点模棱两可。但是,您可以使用:

rm -i *[0-9][0-9]

只要您不介意删除以三位数结尾的文件即可。如果您不介意删除三位数文件,请使用:

rm -i *[!0-9][0-9][0-9]

(假设 Bash 历史扩展不会妨碍)。请注意,如果您的文件名仅包含 2 位数字,则不会删除;这将需要:

rm -i [0-9][0-9]

小心!

-i 选项用于交互。尝试使用 globbing 和 rm 命令通常不是一个好主意,因为如果弄错了,可能会造成很大的损失。但是,您可以使用其他技术来消除危险,例如:

echo *[!0-9][0-9]

回显所有文件名,或者:

printf '%s\n' *[!0-9][0-9]

每行列出一个文件名。基本上,在尝试删除文件时要小心——不要冒险犯错误,除非您知道自己有现成的良好备份。即使这样,最好不要使用它们

另请参阅 GNU Bash 手册:

【讨论】:

    【解决方案2】:

    命令

    rm [0-9]*
    

    表示删除所有以数字开头的文件[] 内的范围被单次扩展。

    而你打算删除以两位数结尾的文件,所以命令应该是

    rm *[0-9][0-9]
    

    如果你有一些文件扩展名,命令应该修改为

    rm *[0-9][0-9]* or
    rm *[0-9][0-9].ext
    

    其中exttxt 之类的扩展名

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 2019-07-21
      • 2022-11-28
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多