当模式的可变部分是非连续数字时,如何在zgrep命令中对要搜索的文件名应用模式?

时间:2014-12-10 19:40:58

标签: regex grep

使用zgrep命令我想要包含字符串'23230797'的文件列表(这些是压缩的.gz文件),例如结果文件是:

/var/log/logfile.DC_8_172.17.80.63.log.2014-12-10-01-PDT.gz
/var/log/logfile.DC_1_172.17.80.63.log.2014-12-01-23-IST.gz
/var/log/logfile.DC_5_172.17.80.63.log.2014-12-30-11-PST.gz

注意:'DC_'之后的变量substring(单个数字)。 在我的情况下,我不想用户*或?代替数字,因为我已经知道我想要搜索字符串的文件的数字,我希望我的搜索定位我指定的特定文件。

    zgrep -l 23230797 /var/log/logfile.DC_5_172.17.80.63.log.2014-12* 

1 个答案:

答案 0 :(得分:0)

你可以使用shell glob:

zgrep -l 23230797 /var/log/logfile.DC_[0-9]_172.17.80.63.log.2014-12*

[0-9]将匹配DC_之后的任何数字。

要搜索特定文件,请使用:

zgrep -l 23230797 /var/log/logfile.DC_[815]_172.17.80.63.log.2014-12*

编辑:回答评论中提出的问题:

  

如果图案包含特定的'单个和双位数字,例如DC_22_DC_1_

您可以在BASH中使用extglob

shopt -s extglob
zgrep -l 23230797 /var/log/logfile.DC_@(22|1)_*