我有一个正则表达式,可以在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
非常感谢任何帮助!
答案 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