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
인수 될 수있는 경우 이전에 추가 할 수 있습니다
대단히 감사합니다. 여러 tar.gz 아카이브에서 동일한 작업을 수행 할 논리를 제안 할 수도 있습니다 ...... 스크립트에서 * .tar.gz를 시도했지만 작동하지 않습니다. –
@Agent Smith : for for i in * .tar.gz; do echo $ i; 다 됐어? – TrueY