解凍せずにzipアーカイブ内の特定のファイルへのパスをどのように知ることができますか?

解凍せずにzipアーカイブ内の特定のファイルへのパスをどのように知ることができますか?

ファイル名だけを知るだけで正確な場所はわかりません。アーカイブからファイルを抽出したいです。アーカイブのどこにいるのか知りたいです。

答え1

unzipワイルドカードとワイルドカードが許可されています。ファイル名を知っていれば、単に次のように言うことができます。

unzip archive.zip "**/file_to_extract"

そのファイルを抽出するため。

答え2

コメントと回答を組み合わせて、次のようにすることができます。

unzip -l archive.zip | grep "nameOfile"
./tmp/nameOffileponey
./ham/smoked/nameOfile
#identify the path of the file precisely in your archive if filtering gives you several result and then use 
 unzip archive.zip ./ham/smoked/nameOfile

これはうまくいきます

答え3

zipアーカイブをファイルシステムとしてマウントするヒューズジッパー。その後、必要なコマンドを使用してその中のファイルにアクセスできます。

mkdir foo
fuse-zip foo.zip foo

needle.txt次に、そのファイルがあるサブディレクトリからコピーします。

find foo -name needle.txt -exec cp -p {} . \;

または、シェルの再帰ワイルドカードを使用します(bashではshopt -s globstar最初に実行する必要があり、zshではすぐに実行されます)。

cp -p foo/**/needle.txt .

使用が終わったら、ファイルシステムをアンマウントします。

fusermount -u foo

関連情報