348個のZipファイルがあり、Zipファイルの1つにあるファイルを見つけたいのですが、unzip -l
はワイルドカードでは動作しませんか?
すべての.Zip
ファイルとgrep
のコンテンツを、zipに含まれるすべてのファイルのマージされたリストから一覧表示するにはどうすればよいですか?
ここでは、zipinfo
を使用するのが良い解決策です。ただし、一般に、コマンドをファイルのリストに適用したいが、コマンドがファイルのリストを受け入れない場合は、for
ループを使用できます。
for file in *.Zip; do
unzip -l "$file"
done \
| grep "\.Zip\|setup"
検索するファイルにyour file
のようなスペースがある場合、grepの正規表現では、grep "\.Zip\|your\ file"
のようなバックスラッシュですべてのスペースをエスケープする必要があります。
zipinfo
を使用できます。デフォルトのUbuntuインストールに含まれています。詳細については、 マニュアルページ を確認してください。
たとえば、現在のディレクトリにある一連のZipファイルでパターンsetup
を検索するには、次のコマンドを使用します。
find ./ -iname *Zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup
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