使用regexp在list命令中匹配一个字符两次:为什么这匹配?

时间:2015-02-03 10:38:12

标签: regex bash glob

我想匹配序列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 

不知何故,正则表达式也返回:job_ +一个数字+ .sh

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

由于

1 个答案:

答案 0 :(得分:2)

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

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

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

  • literal job_
  • 数字0-9
  • 数字 2
  • literal .sh

这就是为什么您在2

之前获得.sh所有文件名的原因