ugrepを試してください

ugrepを試してください

私はSunOS 5.10を開発しています。約200個のzipファイルを含むフォルダがあります。各zipファイルには1つのテキストファイルしか含まれていません。すべての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ファイルの内容とパターンによっては、偽の肯定および/または偽の否定が発生する可能性があります。

おすすめ記事