给予sudo权限来记录不同路径上的文件,例如/a/b1/c.log和/a/b2/d.log等文件

时间:2015-07-13 12:15:00

标签: regex linux sudo centrify

我需要一个很好的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

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

2 个答案:

答案 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

感谢您的帮助。