ファイル名だけを知るだけで正確な場所はわかりません。アーカイブからファイルを抽出したいです。アーカイブのどこにいるのか知りたいです。
答え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