我很难找到,而正则表达对我来说一直都很棘手。我希望有人可以为我快速纠正这个问题,甚至可能告诉我为什么这不是我认为它应该做的(排除某些类型的文件是目标):
find . -type f \( -name "*" ! -name "*\.(vm | jar | class | htm | html | jpg | gif)$" \)
提前致谢。
答案 0 :(得分:2)
我不熟悉find命令语法,但要匹配具有给定扩展名的文件,您需要:
".*\.(vm|jar|class|htm|html|jpg|gif)$"
删除空格并在开头添加点。
答案 1 :(得分:2)
看起来问题是关于Unix shell ......
无论如何,在我更了解的正则表达式方面,我认为你必须删除表达式中的空格:
"\.(vm|jar|class|html?|jpg|gif)$"
我不保证你的命令本身的有效性......
答案 2 :(得分:1)
我非常确定默认情况下查找会查找每个名称,因此此处不需要额外的“ -name”*“”。
在正则表达式方面,您似乎找到了所需的答案,但您可能仍然想知道查找有一个 OR 标记( -or或-o)当正则表达式导致麻烦时,可以使事情变得更容易:
find . -type f ! \( -name "*.vm" -o -name "*.jar" -o -name ".class" \)
在不利方面,写起来显然更长......
请记得查看man find。
祝你好运