0

我需要列出所有具有 alien.digits 数字的文件名可以从 1 到多个,但如果它是任何其他东西的混合物,如 alien.htm、alien.1php、alien.1234.pj.123、外星人.123.12,外星人.12.12p.234htm

我写道: find home/jassi/ -name "alien.[0-9]*" 但它不工作并且它匹配一切。

有什么解决办法吗?

4

4 回答 4

2

我想你想要的是

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

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

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

于 2012-06-20T10:20:05.100 回答
1

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

于 2012-06-20T09:24:22.737 回答
0

*修饰符表示前一个匹配的 0 个或多个,并且表示.任何字符,这意味着它正在匹配alien

试试这个:

alien\.[0-9]+$

+修饰符表示前一个匹配项的 1 个或多个,并且已.转义为文字字符,$末尾的 the 表示“字符串结尾”。

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

于 2012-06-20T09:15:21.287 回答
0

它对我有用:find home/jassi/ type -f -regex ".*/alien.[0-9]+"

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

谢谢bmk。我只是想通了,同时你的反应完全一样。伟大的!

于 2012-06-20T10:27:42.993 回答