web-dev-qa-db-ja.com

フォルダー内のすべての.Zipファイルのコンテンツをリストし、特定のファイルのgrepを表示するにはどうすればよいですか?

348個のZipファイルがあり、Zipファイルの1つにあるファイルを見つけたいのですが、unzip -lはワイルドカードでは動作しませんか?

すべての.Zipファイルとgrepのコンテンツを、zipに含まれるすべてのファイルのマージされたリストから一覧表示するにはどうすればよいですか?

27

ここでは、zipinfoを使用するのが良い解決策です。ただし、一般に、コマンドをファイルのリストに適用したいが、コマンドがファイルのリストを受け入れない場合は、forループを使用できます。

for file in *.Zip; do
    unzip -l "$file"
done \
| grep "\.Zip\|setup"

検索するファイルにyour fileのようなスペースがある場合、grepの正規表現では、grep "\.Zip\|your\ file"のようなバックスラッシュですべてのスペースをエスケープする必要があります。

16
Konrad Rudolph

zipinfoを使用できます。デフォルトのUbuntuインストールに含まれています。詳細については、 マニュアルページ を確認してください。

たとえば、現在のディレクトリにある一連のZipファイルでパターンsetupを検索するには、次のコマンドを使用します。

find ./ -iname *Zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup
12
Anwar

Zipアーカイブ内のファイルをリストするには、次のコマンドを使用できます。

unzip -l

圧縮アーカイブをgrepするには、そのタイプのアーカイブ形式で動作するように構築された圧縮アーカイブユーティリティを使用する必要があります。

Zipアーカイブの場合:

zipgrep --help  
usage: zipgrep [egrep_options] pattern zipfile [members...]
Uses unzip and egrep to search the Zip members for a string or pattern.

Tarアーカイブの場合:

zgrep --help
Usage: /bin/zgrep [OPTION]... [-e] PATTERN [FILE]...
Look for instances of PATTERN in the input FILEs, using their
uncompressed contents if they are compressed.

OPTIONs are the same as for 'grep'.

アーカイブを扱う他のツールもいくつかあります。出力をgrepにパイプして同じことを行うことができます。

zcat
zcat my.archive.Zip | grep "some text"

または、これらのツールの検索機能を使用できます

zless
zmore
6
nelaaro