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
如果出于某种原因必须使用正则表达式,下面分别介绍如何使用GNUfind
和BSDfind
:
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位数字的条目。文件名是否仅为两位数字,而不是其他数字,甚至是扩展名?请在您的答案中添加一些解释,以便其他人可以从中学习