在bash中testing正则expression式模式的文件名

我不确定应该如何写代码,但我想testing一个文件/文件夹命名模式,如下所示:

如果[-d $ i] && [regex([0-9]。,$ i){
       做一点事
     }

我希望它检查文件/文件夹是否是一个目录,并且它的名称是一个数字(即1或101或10007)…

[不能做正则expression式。 但是, [[可以:

 if [[ -d $i -a $i =~ ^[0-9]+$ ]] ; then ... fi 

如果你使用早于3.2版的Bash,正则expression式匹配运算符=~不存在,工作方式不同或有错误。 在这种情况下,您可以使用这种glob扩展forms(或者如果您使用的是没有它的POSIX shell)。

 case $i in *[^0-9]*) do_not_a_number_stuff ;; *) if [ -d "$i" ] then do_something fi ;; esac