如何在find命令下使用正则表达式

时间:2012-06-20 09:12:25

标签: regex linux find

我需要列出所有具有alien.digits的文件名 数字可以是1到很多的任何时间 但它不应该匹配,如果它的任何其他东西的混合物,如alien.htm,alien.1php,alien.1234.pj.123,alien.123.12,alien.12.12p.234htm

我写道: 找到home / jassi / -name“alien。[0-9] *” 但它不起作用,它与所有东西相匹配。

任何解决方案?

4 个答案:

答案 0 :(得分:2)

我认为你想要的是

find home/jassi/ -regex ".*/alien\.[0-9]+"

使用-name选项,您不需要指定正则表达式,而是指定 glob模式

请注意,find期望整个路径与正则表达式匹配。

答案 1 :(得分:1)

试试这个:find home/jassi/ -name "alien\.[0-9]+$" 它将匹配所有alien.的文件,并以至少一个数字结尾,但不包括数字。 $字符表示字符串结尾

答案 2 :(得分:0)

*修饰符表示上一个匹配项中的0个或更多,.表示任何字符,表示它匹配alien

请改为尝试:

alien\.[0-9]+$

+修饰符表示上一个匹配中的一个或多个,.已转义为文字字符,而末尾的$表示“字符串结尾”

如果您想确保只有与您的正则表达式完全匹配的文件,您还可以在正则表达式的开头添加^^字符表示“字符串开头”,因此^alien\.[0-9]+$将与alien.1234匹配,但与not_an_alien.1234不匹配。

答案 3 :(得分:0)

它对我有用: 找到home / jassi / type -f -regex“。* / alien。[0-9] +”

我必须提供type -f来检查它是否是一个文件,否则它会显示同名的目录。

谢谢bmk。我刚想通了,同时你的反应完全相同。太好了!