我需要一个很好的Centrify工具列,其中包含不同文件夹下的所有日志文件,例如;
/oradata1/oracle/admin/A/scripts/rman_logs/*.log
/oracle/oracle/admin/B/scripts/rman_logs/*.log
/oradata2/admin/C/scripts/logs/*.log
我使用了这个但是在*字符用户可以看到所有日志之后; / ORA(数据(1 | 2)| CLE)/ ORACLE |管理/管理/ * /脚本/ rman_logs
/ora(data(1|2)|cle)/oracle|admin/admin/*/scripts/rman_logs
我必须使用哪种表达方式。
答案 0 :(得分:0)
如果我正确理解了我们的问题,您只需要.log
个文件。您可以使用正向前瞻来断言它确实是log
文件(在文件名末尾包含.log
),并匹配文件名,无论它是(.*)
。
然后它真的很容易。 (?=.*\.log(?:$|\s)).*
当然,如果您希望限制匹配,也可以添加特定文件夹,但积极前瞻仍然可以正常工作。即(?=.*\.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,没有必要,因为您可以单独指定每个文件路径,如果它们不重叠太多。
答案 1 :(得分:0)
我找到了一个全局表达。
这不是一个好方法,但它起作用并使我免于大量工作。对于所有服务器,主要文件都在...... / scripts / rman_logs /下,所以我使用这种方式。
我可以生成这些行,并且可以是用户的命令组,所以这很好用
tail / / / / / scripts / rman_logs / * .log
tail / / / / scripts / rman_logs / .log
感谢您的帮助。