Grep
在多個 zip 文件中搜尋字元串
我正在開發 SunOS 5.10。我有一個包含大約 200 個 zip 文件的文件夾。每個 zip 文件中僅包含一個文本文件。我想在所有 zip 文件的所有文本文件中搜尋特定字元串。
我試過這個(它在 zip 文件中搜尋包含字元串“ORA-”的任何文本文件)但它沒有用。
zipgrep ORA-1680 *.zip
不解壓縮 zip 文件的正確做法是什麼?
通常,如果不以一種或另一種方式解壓縮,就不可能在壓縮文件中搜尋內容。由於 zipgrep 只是一個 shellscript,包裝了 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
這樣,您只需解壓縮到標準輸出(即到記憶體),而不是將文件解壓縮到磁碟。您當然可以嘗試僅
grep -a
壓縮 zip 文件,但根據文件的內容和您的模式,您可能會得到誤報和/或誤報。