Unix查找命令中的数字的正则表达式

Tef*_*Ted 8 regex unix command-line find

我有这个命令:

find reports/ -type f -mtime +90 -regex ".*\.\(csv\|sql\|txt\|xls\|zip\)"
Run Code Online (Sandbox Code Playgroud)

我需要加强它,以便文件扩展名之前的部分匹配YYYY/MM/DD模式,如下所示:

reports/2010/10/10/23.txt
reports/2010/10/10/23.xls
reports/2010/10/10/26.csv
reports/2010/10/10/26.sql
reports/2010/10/10/26.txt
reports/2010/10/10/26.xls
reports/2010/10/10/27.csv
Run Code Online (Sandbox Code Playgroud)

但我没有得到任何排列\d和parens逃避工作.

更新:根据以下接受的答案,这对我有用:

find reports/ -type f -mtime +90 -regex "reports/201[01]/\([1-9]\|1[012]\)/\([1-9]\|[12][0-9]\|3[01]\)/.*\.\(csv\|sql\|txt\|xls\|zip\)"
Run Code Online (Sandbox Code Playgroud)

Jan*_*ger 6

\d是 Emacs 正则表达式和 POSIX 正则表达式不支持的正则表达式的扩展(这些是口味find支持)。您可以使用[[:digit:]][0-9]代替。


dog*_*ane 6

这是我过去使用的:

Year: (19|20)[0-9][0-9]
Month:  0[1-9]|1[012]
Day: (0[1-9]|[12][0-9]|3[01])
Run Code Online (Sandbox Code Playgroud)

你可以把它们放在你的正则表达式中.当然,你必须逃离支架和管道.