正则表达式排除查找中的文件类型

时间:2012-12-20 14:49:51

标签: regex find

我很难找到,而正则表达对我来说一直都很棘手。我希望有人可以为我快速纠正这个问题,甚至可能告诉我为什么这不是我认为它应该做的(排除某些类型的文件是目标):

find . -type f \( -name "*" ! -name "*\.(vm | jar | class | htm | html | jpg | gif)$" \)

提前致谢。

3 个答案:

答案 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

祝你好运