2013-04-17 23 views
0

我在tar.gz archive中有幾個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 

的問題是,使用上述在「如果」條件我得到的字符串模式在兩個server.log的匹配。*和data.log。*文件

在「如果」聲明我需要添加一個條件,使每個FILENAME與模式server.log。*進行比較,並且grep僅在server.log。*文件上執行

任何幫助都是值得歡迎的。在此先感謝

回答

1

可以循環像這裏面的if前申請:

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

當然,你也可以添加,如果條件

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

也許-q ARG可能是前添加到grep不寫行到標準輸出。

+0

非常感謝。你是否也可以建議在多個tar.gz檔案中執行相同的邏輯...... 已經在腳本中嘗試過* .tar.gz,但它不起作用 –

+0

@Agent Smith:對於我與* .tar.gz;做echo $ i; done'? – TrueY