【问题标题】:Bash bracket expansion: How to match all files names with a number?Bash 括号扩展:如何将所有文件名与数字匹配?
【发布时间】:2016-02-16 13:28:20
【问题描述】:

我想匹配目录中的所有文件名,如下所示:

h1.txt, h2.txt, h12.txt, h3.txt

如果我这样做

echo h[[:digit:]].txt

我明白了

h1.txt, h2.txt, h3.txt

所以它匹配我想要的所有文件,除了h12.txt,因为它有两位而不是一位。 一个或多个位是否有扩展?

【问题讨论】:

  • 你也可以使用find 正则表达式命令
  • 当有一个简单的内置 shell 功能时使用find 是大材小用。
  • 是的 .. 那是真的 .. 我只是在您需要更多电源和过滤器时提到它。

标签: bash brace-expansion


【解决方案1】:

想通了!

echo h+([[:digit:]]).txt

【讨论】:

  • 为了完整起见,这需要设置extglob 选项:shopt -s extglob
  • @chepner 我怎么知道我的环境中设置了这个选项?
  • 我的意思是,不运行这段代码,看看它是否有效......有没有办法直接获取当前的选项值?
  • shopt -p extglob 将输出当前状态。如果设置了,则输出为shopt -s extglob;否则,shopt -u extglob.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
  • 2016-09-12
  • 1970-01-01
  • 2013-03-05
  • 2022-12-14
  • 2011-07-31
  • 1970-01-01
相关资源
最近更新 更多