正则表达式错误

时间:2012-05-23 18:06:55

标签: regex find posix

我有一个正则表达式,可以在Javascript中使用,但不能与Linux find命令一起使用。目的是收集过去90天内已更新的文件列表,不包括特定目录(例如,假设我要包含目录/data/safe/23/test,但不包括/data/safe/23/skip1)。这是正则表达式:

^/data/safe/\d{1,4}/(?:(?!skip1|skip2).*)

这是find命令(注意我正在使用posix-extended;这可能是问题):

find /data/safe -regextype posix-extended -regex '^/data/safe/\d{1,4}/(?:(?!skip1|skip2).*)' -mtime -90

最后这是生成的错误:

find: Invalid preceding regular expression

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

你做错了。您需要用星号替换花括号。你也应该通过tar或touch命令管理整个事情。

答案 1 :(得分:1)

我认为posix-extended不支持“?:”和“?!”。

无论如何,通过find,使用类似的东西会更容易:

find /data/safe -regextype posix-extended -regex '^/data/safe/[0-9]{1,4}/.*' ! -regex '^/data/safe/[0-9]{1,4}/(skip1|skip2).*' -mtime -90