使用正则表达式在列表命令中匹配一个字符两次:为什么匹配?

Matching a character twice in a list command with regexp: why does this match?

我想匹配序列 job_ + 两个数字 + .sh 所以我使用了这个正则表达式:ls job_[0-9]{2,}.sh

然而结果是:

job_0.sh   job_1.sh   job_2.sh   job_3.sh   job_4.sh   job_5.sh
job_6.sh   ob_7.sh   job_8.sh   job_9.sh job_12.sh  job_22.sh
job_32.sh  job_42.sh job_52.sh  job_62.sh  job_72.sh  job_82.sh  job_92.sh 

正则表达式 return 不知何故:job_ + 一个数字 + .sh

这是一个错误还是我遗漏了什么?

谢谢

Shell glob 模式不是正则表达式,因此 {2,} 不起作用。您可以使用:

ls job_[0-9][0-9].sh

Shell glob 模式扩展 job_[0-9]{2,}.sh 为:

  • 文字job_
  • 一个数字0-9
  • 一个数字 2
  • 文字.sh

这就是为什么您在 .sh

之前获取带有 2 的所有文件名的原因