Regex 列出名称由两位数字组成的文件

Regex 列出名称由两位数字组成的文件,regex,bash,find,Regex,Bash,Find,我正在尝试查找当前目录中仅包含两位数字的所有文件或目录 printf '%s\n' ./[0-9][0-9] # drop `./' if you don't need it 正好两位数的正则表达式是 /^\d{2}$/ 所以我尝试了以下方法,但由于反斜杠和正斜杠,我被卡住了 find path ".//^\d{9}$/" 我使用“/[regex]”,因为我正在查找当前目录中的文件或目录使用find如下所示: find . -name '*[0-9]*[0-9]*'

我正在尝试查找当前目录中仅包含两位数字的所有文件或目录

printf '%s\n' ./[0-9][0-9]
# drop `./' if you don't need it
正好两位数的正则表达式是

/^\d{2}$/
所以我尝试了以下方法,但由于反斜杠和正斜杠,我被卡住了

find path ".//^\d{9}$/"

我使用“/[regex]”,因为我正在查找当前目录中的文件或目录

使用
find
如下所示:

find . -name '*[0-9]*[0-9]*'

您不需要在此处查找
。下面的命令将列出当前目录中名称由两位数字组成的文件和目录

printf '%s\n' ./[0-9][0-9]
# drop `./' if you don't need it
如果出于某种原因必须使用正则表达式,下面分别介绍如何使用GNU
find
和BSD
find

find . -maxdepth 1 -regextype egrep -regex '\./[0-9]{2}'
对于任何符合POSIX的
查找
,这将做同样的事情:

find . ! -name . -prune ! -name '*[!0-9]*' -name '??'
# number of question marks determines the length of filename
有些人可能认为
[0-9]
可能匹配0到9之间的多个数字;如果这是一个问题,首先将
LC\u ALL
设置为
C

 find . -regextype posix-extended -regex "^.*[[:digit:]]{2}.*$"

使用regextype标志指定正则表达式类型,以及使用-regex搜索正则表达式。在目录/文件名中的任何位置搜索所有具有2位数字的条目。

文件名是否仅为两位数字,而不是其他数字,甚至是扩展名?请在您的答案中添加一些解释,以便其他人可以从中学习