저는 SunOS 5.10을 개발 중입니다. 약 200개의 zip 파일이 포함된 폴더가 있습니다. 각 zip 파일에는 하나의 텍스트 파일만 포함됩니다. 모든 zip 파일의 모든 텍스트 파일에서 특정 문자열을 검색하고 싶습니다.
이것을 시도했지만("ORA-" 문자열이 포함된 텍스트 파일에 대해 zip 파일을 검색합니다) 작동하지 않습니다.
zipgrep ORA-1680 *.zip
zip 파일의 압축을 풀지 않고 이 작업을 수행하는 올바른 방법은 무엇입니까?
답변1
일반적으로 어떤 방식으로든 압축을 풀지 않으면 압축된 파일의 내용을 검색할 수 없습니다. zipgrep은 unzip과 egrep 자체를 래핑하는 쉘스크립트이므로 수동으로 수행할 수도 있습니다.
for file in *.zip; do unzip -c "$file" | grep "ORA-1680"; done
일치하는 zip 파일 목록만 원하는 경우 다음과 같은 방법을 사용할 수 있습니다.
for file in *.zip; do
if ( unzip -c "$file" | grep -q "ORA-1680"); then
echo "$file"
fi
done
이렇게 하면 파일을 디스크에 압축 해제하는 대신 표준 출력(예: 메모리)으로만 압축을 풀 수 있습니다. 물론 zip 파일만 사용해 볼 수도 있지만 grep -a
파일 내용과 패턴에 따라 거짓 긍정 및/또는 거짓 부정이 발생할 수 있습니다.
답변2
zipgrep
파일이 필요합니다. 여러 파일에서 작동하게 하려면 루프에 넣으세요.
for i in *.zip
do
zipgrep ORA-1680 "$i"
done