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


28

348個のzipファイルがあり、zipファイルの1つにあるファイルを検索したいのですが、unzip -lワイルドカードでは機能しませんか?

すべての.zipファイルのコンテンツを一覧表示grepし、zipに含まれるすべてのファイルの結合リストを表示するにはどうすればよいですか?

回答:


17

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

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

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


作品完全唯一の問題は、それがZIPの名前、表示されていないということです
エドゥアルトFlorinescu

私はあなたが投稿、編集し、またセットアップは、1を発見されたファイル名を表示し、受け入れるために正規表現を追加
エドゥアルトFlorinescu

そうそう、私はへの議論の周りの引用を忘れてしまったunzip
コンラッドルドルフ

1
@JaySullivanこのコードは使用しないでください。スペースを含むパスでは失敗します。lsの出力をパイプしないでください。あなたは可能性が使用find代わりに。
コンラッドルドルフ

12

を使用できます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.zip2つのUbuntuのOSで、11.10と12.04でテストされ、すべてのジッパー、のために。
エデュアルドフロリネスク

@EduardFlorinescu更新された答えを試してください。答えは私のために働いていましたが
アンワール

問題は、ファイルが含まれているということかもしれないということですsetup。それはこのように動作しますが、それは、同じエラーを置くzipinfo -l * | grep "setup"
エドゥアルトFlorinescu

答えを編集しました。私はそれが今より堅牢だと思う
アンワール

1
おかげで、努力してくれましたが、それでもzipファイルの名前にスペースが含まれていると機能しません。
エデュアルドフロリネスク

6

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.