0

我需要一个不错的 Centrify 工具列,其中包括不同文件夹下的所有日志文件,例如;

/oradata1/oracle/admin/A/scripts/rman_logs/*.log

/oracle/oracle/admin/B/scripts/rman_logs/*.log

/oradata2/admin/C/scripts/logs/*.log

我使用了这个,但是在 * 字符之后用户可以看到所有日志;/ora(data(1|2)|cle)/oracle|admin/admin/*/scripts/rman_logs

/ora(data(1|2)|cle)/oracle|admin/admin/*/scripts/rman_logs

我必须使用哪种表达方式。

4

2 回答 2

0

如果我正确理解我们的问题,您只需要.log文件。您可以使用肯定的前瞻来断言它确实是一个log文件(包含.log在文件名的末尾),并匹配文件名,无论它是什么(.*)

然后真的很容易。(?=.*\.log(?:$|\s)).*当然,如果您希望限制匹配项,您也可以添加特定文件夹,但正向前瞻仍然可以发挥作用。IE(?=.*\.log(?:$|\s)).*/scripts/.*

编辑:作为您的评论,您只需要这些文件夹,因此您只需交替指定它们的文件路径并[^.\s\/]*\.log在最后添加。所以:

(?:\/oradata1\/oracle\/admin\/A\/scripts\/rman_logs\/|\/oracle\/oracle\/admin\/B\/scripts\/rman_logs\/|\/oradata2\/admin\/C\/scripts\/logs\/)[^\s.\/]*\.log您可以通过尝试组合文件路径元素来缩短正则表达式,但是,imo 没有必要,因为您可以单独指定每个文件路径,如果它们没有重叠太多。

于 2015-07-13T12:24:04.713 回答
0

我找到了一个全局表达式。

这不是一个好方法,但它有效并且让我免于大量工作。所有服务器的主要文件都在 ....../scripts/rman_logs/ 下,所以我使用这种方式。

我可以生成这些行,并且可以成为用户的命令组,因此效果很好

tail // // / /scripts/rman_logs/*.log

tail // / / scripts/rman_logs/ .log

感谢您的帮助。

于 2015-08-07T09:21:00.187 回答