![查找包含姓名+1900-1990+姓名的文件夹](https://linux22.com/image/139837/%E6%9F%A5%E6%89%BE%E5%8C%85%E5%90%AB%E5%A7%93%E5%90%8D%2B1900-1990%2B%E5%A7%93%E5%90%8D%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我正在尝试搜索许多包含 ex 的文件夹。Events.1900-1990.events
。我不想要文件夹前。使用 时Events.2004
,只有文件夹包含 1900 -> 1990 的年份。
名字Event
可以是任何东西,可以是生日、战争等。
我尝试过这样的事情:
find . -type d -regex '*/[a-z][A-Z]/19+\[0-9]*' -print
但没有发现任何东西
答案1
find . -type d '(' -name '*19[0-8][0-9]*' -o -name '*1990*' ')'
这将找到当前目录中或当前目录下名称包含 1900 到 1990 之间任何数字的任何目录。测试根据文件名分为两部分,第一个测试为 1900 到 1989 之间的数字,第二个测试为1990年。
在这种情况下不需要使用正则表达式。上面的模式是文件名通配模式。
如果您想添加对文件名后缀的测试.events
,则可以通过两种方式执行此操作:
find . -type d -name '*.events' '(' -name '*19[0-8][0-9]*' -o -name '*1990*' ')'
find . -type d '(' -name '*19[0-8][0-9]*.events' -o -name '*1990*.events' ')'
您的命令不会找到任何与*
正则表达式开头的 a 匹配的字符*
。您还可以对表达式中的其中之一进行转义[
,使其与字符 匹配[
。