比较文件名模式

时间:2013-04-17 09:07:01

标签: shell unix grep tar

我在tar.gz存档中有一些类型为server.log。“date”和data.log。“date”的文件,其中date是文件创建的日期。

现在我需要检索server.log。*类型的文件,并在其中搜索字符串模式。

目前我正在使用以下脚本。

tar -ztf file.tar.gz | while read FILENAME
do
        if tar -zxf file.tar.gz "$FILENAME" -O | grep "string"
        then
            echo "$FILENAME contains string"
        fi
done

问题是当使用上面的“if”条件时,我在server.log。*和data.log。*文件中得到字符串模式匹配

在“if”语句中,我需要添加一个条件,使每个FILENAME与模式server.log。*进行比较,并且grep仅在server.log。*文件上执行

欢迎任何帮助。提前致谢

1 个答案:

答案 0 :(得分:1)

您可以在循环内的if之前申请:

[[ "$FILENAME" != server.log.* ]] && continue

当然你也可以在if条件之前添加

if [[ "$FILENAME" == server.log.* ]] && tar -zxf file.tar.gz "$FILENAME" -O | grep "string"

也许可以在grep中添加-q arg而不是将行写入stdout。