我需要列出其为具有alien.digits 数字可从1随时随地许多 所有文件名之下,但它不应该匹配,如果像alien.htm任何其他东西的混合物, alien.1php,alien.1234.pj.123,alien.123.12,alien.12.12p.234htm如何使用正则表达式find命令
我写道: 找到回家/ jassi/-name “外星人[0-9] *”。 但不工作,并与其匹配的一切。
任何解决方案?
我需要列出其为具有alien.digits 数字可从1随时随地许多 所有文件名之下,但它不应该匹配,如果像alien.htm任何其他东西的混合物, alien.1php,alien.1234.pj.123,alien.123.12,alien.12.12p.234htm如何使用正则表达式find命令
我写道: 找到回家/ jassi/-name “外星人[0-9] *”。 但不工作,并与其匹配的一切。
任何解决方案?
我想你想要的是
find home/jassi/ -regex ".*/alien\.[0-9]+"
随着-name
选项,您不指定正则表达式但glob模式。
请注意,find期望整个路径与正则表达式匹配。
的*
修饰符意味着0个或多个先前的匹配,和.
指任何字符,这意味着它匹配alien
。
试试这个:
alien\.[0-9]+$
的+
修饰符意味着1个或多个前面的比赛中,和.
已经逃到文字字符,并在末尾$
表示“字符串的结束” 。
如果您想确保只有与您的正则表达式完全匹配的文件,您还可以将^
添加到正则表达式的开头。 ^
字符的意思是“字符串的开始”,所以^alien\.[0-9]+$
将匹配alien.1234
,但它不会匹配not_an_alien.1234
。
如果它是Perl,我会说你是对的,但它的Linux机器,它不会工作的确定。我在find命令中找到了一些我们需要使用它的东西。我正在尝试。 – Jassi
试试这个:find home/jassi/ -name "alien\.[0-9]+$"
它会匹配所有具有alien.
的文件,并以至少一个数字结束,但不是数字。 $
字符表示字符串末尾。
这种正则表达式不起作用,它会抛出错误。 错误是非法的变量名称。 你不能使用+或$,*表示一切。 Perl正则表达式在这种情况下不起作用 – Jassi
它的工作对我来说: 找到回家/ jassi/TYPE -f -regex “* /外星人[0-9] +”。
我不得不提供类型-f检查,如果它是一个文件否则它会显示同名的目录。
谢谢bmk。我刚想通了,同时你的回答也完全一样。大!
是的真的我做到了,现在它工作正常 我写道:find/home/jassi -type f -regex“。*/alien。[0-9] *”虽然+也会工作,而不是* :)谢谢bmk – Jassi