348個のzipファイルがあり、zipファイルの1つにあるファイルを検索したいのですが、unzip -l
ワイルドカードでは機能しませんか?
すべての.zip
ファイルのコンテンツを一覧表示grep
し、zipに含まれるすべてのファイルの結合リストを表示するにはどうすればよいですか?
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"
。
unzip
。
find
代わりに。
を使用できますzipinfo
。デフォルトのUbuntuインストールに含まれています。詳細については、マニュアルページを確認してください。
たとえばsetup
、現在のディレクトリにある多数のzipファイルでパターンを検索するには、次のコマンドを使用します。
find ./ -iname *zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup
caution: filename not matched: case1.zip
... caution: filename not matched: case348.zip
2つのUbuntuのOSで、11.10と12.04でテストされ、すべてのジッパー、のために。
setup
。それはこのように動作しますが、それは、同じエラーを置くzipinfo -l * | 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