Linux Live CDを実行していて、ディスクドライブにあるwim-archiveから特定のファイルを抽出する必要があります。アーカイブ内のファイルへの完全パスを知っています。
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
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
7z e [archive name] -o[direction] [filename] -r
例えば:
7z e 'Movies.rar' -o/root/Downloads/ 'Rush.mp4' -r
このコマンドはうまくいきました。ubuntuサーバー16.04で試しました。