2013-04-17 2 views
0

파일 이름은 server.log. "date"이고 data.log. "date"는 tar.gz 아카이브에 저장됩니다. 여기서 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. * 파일

은 "만약"에

문 각 파일 이름을 server.log. * 패턴과 비교하고 grep을 server.log. * 파일에서만 수행하도록 조건을 추가해야합니다.

도움이되었으므로 언제든지 환영합니다.

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

은 물론 또한 조건이

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

아마 -q 인수 될 수있는 경우 이전에 추가 할 수 있습니다

답변

1

당신은이 같은 루프 뭔가 내부 if 전에 적용 할 수 있습니다 미리 감사드립니다 grep에 stdout에 행을 쓰지 않도록 추가되었습니다.

+0

대단히 감사합니다. 여러 tar.gz 아카이브에서 동일한 작업을 수행 할 논리를 제안 할 수도 있습니다 ...... 스크립트에서 * .tar.gz를 시도했지만 작동하지 않습니다. –

+0

@Agent Smith : for for i in * .tar.gz; do echo $ i; 다 됐어? – TrueY

관련 문제