我正在find (GNU findutils) 4.7.0
使用GNU bash, version 5.0.17
。
touch hello.32.world.txt
find . # works, output is: ./hello.32.world.txt
find . -regextype posix-extended -regex '.*hello\.32\.world\.txt' # works
find . -regextype posix-extended -regex '.*hello\.[0-9]+\.world\.txt' # works
find . -regextype posix-extended -regex '.*hello\.\d+\.world\.txt' # fails
find . -regextype posix-extended -regex '.*hello\.[\d]+\.world\.txt' # fails
我是否缺少某种转义序列来\d+
匹配一个或多个数字?
如果我输入find -regextype help
,它会显示valid types are ‘findutils-default’, ‘ed’, ‘emacs’, ‘gnu-awk’, ‘grep’, ‘posix-awk’, ‘awk’, ‘posix-basic’, ‘posix-egrep’, ‘egrep’, ‘posix-extended’, ‘posix-minimal-basic’, ‘sed’
。尝试这些也不起作用。
答案1
我认为d+
在这种情况下不会起作用。在这种情况下,请尝试使用[[:digit:]]
如下方法:
find . -regextype posix-extended -regex '.*hello\.[[:digit:]]+\.world\.txt'
或者使用[0-9]{1,2}
匹配特定数量的数字;在本例中为 1 到 2 位数字:
find . -regextype posix-extended -regex '.*hello\.[0-9]{1,2}\.world\.txt'