Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在find命令下使用regex_Regex_Linux_Find - Fatal编程技术网

如何在find命令下使用regex

如何在find命令下使用regex,regex,linux,find,Regex,Linux,Find,我需要列出所有包含alien.digits的文件名 数字可以是从1到多的任意数字 但是如果它是任何其他东西的混合物,如alien.htm、alien.1ppp、alien.1234.pj.123、alien.123.12、alien.12.12p.234htm,则不应匹配 我写道: 查找主页/jassi/-name“外星人[0-9]*” 但它不起作用,它与一切都匹配 有解决方案吗?修饰符*表示0个或更多以前的匹配,而表示任何字符,这意味着它匹配的是外星人 请尝试以下方法: alien\.[0-9

我需要列出所有包含alien.digits的文件名 数字可以是从1到多的任意数字 但是如果它是任何其他东西的混合物,如alien.htm、alien.1ppp、alien.1234.pj.123、alien.123.12、alien.12.12p.234htm,则不应匹配

我写道: 查找主页/jassi/-name“外星人[0-9]*” 但它不起作用,它与一切都匹配


有解决方案吗?

修饰符
*
表示0个或更多以前的匹配,而
表示任何字符,这意味着它匹配的是
外星人

请尝试以下方法:

alien\.[0-9]+$
+
修饰符表示上一个匹配的1个或多个匹配项,
已转义为文字字符,末尾的
$
表示“字符串结束”


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

修饰符
*
表示先前匹配的0个或多个字符,
表示任何字符,这意味着它匹配
alien

请尝试以下方法:

alien\.[0-9]+$
+
修饰符表示上一个匹配的1个或多个匹配项,
已转义为文字字符,末尾的
$
表示“字符串结束”


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

尝试以下操作:
查找主页/jassi/-name“alien\[0-9]+$”

它将匹配所有包含
外星人。
的文件,并以至少一个数字结束,但除数字外无其他内容。
$
字符表示字符串的结尾。

尝试以下操作:
查找主页/jassi/-name“alien\.[0-9]+$”

它将匹配所有包含
外星人。
的文件,并以至少一个数字结束,但除数字外无其他内容。
$
字符表示字符串的结尾。

我想你想要的是

find home/jassi/ -regex ".*/alien\.[0-9]+"
使用
-name
选项,您不指定正则表达式,而是指定glob模式


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

我想您需要的是

find home/jassi/ -regex ".*/alien\.[0-9]+"
使用
-name
选项,您不指定正则表达式,而是指定glob模式

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

它对我有效: find home/jassi/type-f-regex“*/alien[0-9]+”

我必须提供类型-f来检查它是否是一个文件,否则它将显示同样名称的目录

谢谢bmk。我刚想出来,同时你的回答也完全一样。太好了

这对我很有效: find home/jassi/type-f-regex“*/alien[0-9]+”

我必须提供类型-f来检查它是否是一个文件,否则它将显示同样名称的目录


谢谢bmk。我刚想出来,同时你的回答也完全一样。太好了

这种正则表达式不起作用,它会抛出错误。错误是非法的变量名。您不能使用+或$,而*意味着一切。Perl正则表达式样式在这种情况下不起作用这种正则表达式不起作用,它会抛出错误。错误是非法的变量名。您不能使用+或$,而*意味着一切。Perl正则表达式样式在这种情况下不起作用如果它是Perl,我会说你是对的,但是它的Linux框和它肯定不会起作用。我在find命令中发现了一些正则表达式,我们需要使用它。我现在正在尝试。如果它是Perl,我会说你是对的,但是它的Linux框和它肯定不能工作。我在find命令中发现了一些正则表达式,我们需要使用它。我现在正在尝试。是的,我确实这样做了,现在工作很好,我写了:find/home/jassi-typef-regex“*/alien[0-9]*”虽然+也可以代替*:)谢谢bmkYes,是的,我确实这样做了,现在工作很好,我写了:find/home/jassi-typef-regex“*/alien[0-9]*”虽然+也可以代替*:)谢谢bmk