我在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。*文件上执行
欢迎任何帮助。提前致谢
答案 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。