私は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
(フルパスを維持したくない場合は、機能文字を使用できますe
。7z 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'