7-Zipを使用してアーカイブから特定のファイルを抽出します。

7-Zipを使用してアーカイブから特定のファイルを抽出します。

私はLinux Live CDを実行しており、ディスクドライブ上のwimアーカイブから特定のファイルを抽出する必要があります。アーカイブ内のファイルのフルパスを知っています。

xubuntu@xubuntu:~$ 7z l winRE.wim | grep -i bootrec.exe
2009-08-28 15:02:29 ....A       299008       134388  Windows/System32/BootRec.exe

アーカイブ全体を解凍するのに十分なディスク容量がありません。

アーカイブから特定のファイルをどのように抽出しますか?

このオプションを試しましたが、-i機能しません。

xubuntu@xubuntu:~$ 7z x -i Windows/System32/BootRec.exe winRE.wim 


Error:
Incorrect command line

答え1

ページman 7zの内容は次のとおりです。

  -i[r[-|0]]{@listfile|!wildcard}
         Include filenames

ファイル名の前に明示的に!指定し、一重引用符を使用してbash拡張からスイッチを保護する必要があります。7z x '-i!Windows/System32/BootRec.exe' winRE.wim

xubuntu@xubuntu:~$ 7z x '-i!Windows/System32/BootRec.exe' winRE.wim

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Processing archive: winRE.wim

Extracting  Windows/System32/BootRec.exe

Everything is Ok

Size:       299008
Compressed: 227817568

(フルパスを維持したくない場合は、機能文字を使用できますe7z e '-i!Windows/System32/BootRec.exe' winRE.wim

ただし、オプションを一重引用符で保護しない場合、または-i二重引用符で保護しないと、エラーが発生します。

xubuntu@xubuntu:~$ 7z x "-i!Windows/System32/BootRec.exe" winRE.wim 
bash: !Windows/System32/BootRec.exe: event not found

答え2

7z e [archive name] -o[direction] [filename] -r

たとえば、

7z e 'Movies.rar' -o/root/Downloads/ 'Rush.mp4' -r

このコマンドは私にとって効果的で、Ubuntu Server 16.04で試しました。

答え3

私にとって効果的でした(スラッシュを使用することもできます。以下を参照):( ZIPファイルから抽出された1つのPNGファイル:このコマンドは現在のディレクトリに「file.png」という名前のファイルを作成または
7z e -so 'file.zip' 'file\path\file.png' > 'file.png'
上書きします。eファイル名を保持しますが、ファイルパスではありません-so:標準出力に出力)。

私には適していません:

7z e 'file.zip' 'file.png' -r
7z e 'file.zip' -o. 'file.png' -r
7z e 'file.zip' -o'.' 'file.png' -r
7z e '-i!file.png' 'file.zip'
7z e '-i!file/path/file.png' 'file.zip'
7z e '-i!/file/path/file.png' 'file.zip'

このコマンドは私には機能しませんが、なぜ1つだけ動作しますか? ZIPファイルのファイルパス内のフォルダ区切り文字は、通常のスラッシュではなくバックスラッシュである可能性があります。おそらく、バックスラッシュ(\)またはエスケープバックスラッシュ(\\)を使用してこのコマンドを実行する必要があります。それではうまくいきます。

バックスラッシュが利用できないZIPファイルがある場合(https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT§4.4.17.1)ファイルパスから次のunzipコマンドを使用して個々のファイルを抽出することもできます。
unzip -p file.zip 'path\\to\\file.png'

(クレジット取引:https://archived.moe/g/thread/85892819#85900314)

関連情報