查找出现 N 次的一组字符的目录名称

查找出现 N 次的一组字符的目录名称

如何非递归地匹配包含 N 次出现的字符子集的目录名称(使用find)?

在我的具体情况下,我只想要 6 位数字的目录名称。这是有效但非特定的(它会给我所有带有数字的目录名称):

find . -maxdepth 1 -type d -regex './[0-9]+'
ls -d +([0-9])

这也有效,但给了我以数字开头并后跟任何内容的目录名称:

find . -maxdepth 1 -type d -name '[0-9]*'

从我读到的内容来看,我不知道如何匹配lsN 次,因为它使用 glob 而不是正则表达式(而且我对 glob 一无所知)。我不明白的是,这些都不能使用find

find . -maxdepth 1 -type d -regex './[0-9]{6}'
find . -maxdepth 1 -type d -name '[0-9]{6}'
find . -maxdepth 1 -type d -name '[0-9]+'

我已经使用过正则表达式很多次了,但我不明白我的模式出了什么问题(我也很惊讶我必须用 来指定./-regex

答案1

regexGNU 的默认类型findemacs,它不支持间隔。您可以指定不同的正则表达式类型,例如posix-egrep,这将解决您的问题:

find . -maxdepth 1 -type d -regextype posix-egrep -regex './[0-9]{6}'

相关内容