0

我在 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.* 进行比较,并且仅对 server.log.* 文件执行 grep

欢迎任何帮助。提前致谢

4

1 回答 1

1

您可以if在循环内部之前应用如下内容:

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

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

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

也许-q可以在 grep 中添加一个 arg,而不是向标准输出写入行。

于 2013-04-17T11:05:09.750 回答