ファイル名が解凍プログラムで読み取れない形式でエンコードされているシステムにパックされたZipファイルをWebから取得しました。おそらく、ファイルシステムはそれらの奇妙な文字やシェルをサポートしていません。よくわかりません。
私はファイル名をあまり気にしないので、許容できる解決策は、ファイルの名前を変更するか、アーカイブで指定された名前以外の名前のファイルに内容を書き込むことです。それは一般的なコマンドラインZipユーティリティで可能ですか?もしそうなら、どのように。何が間違っているのか(おそらくZipユーティリティではない)に関する他の提案も歓迎します。
症状は次のとおりです。
$ unzip -l 3688232.Zip ; unzip 3688232.Zip
Archive: 3688232.Zip
Length Date Time Name
--------- ---------- ----- ----
107937 10-24-2012 01:00 [-?M+?V+?e-?] Le Gout Des autres - Agn+?s Jaoui - 2000 (sep subs).srt
6354 10-24-2012 01:00 le.gout.des.autres.(3688232).nfo
--------- -------
114291 2 files
Archive: 3688232.Zip
error: cannot create [-?M+?V+?e-?] Le Gout Des autres - Agn+?s Jaoui - 2000 (sep subs).srt
Invalid or incomplete multibyte or wide character
$ unzip --help
UnZip 6.00 of 20 April 2009, by Info-Zip. Maintained by C. Spieler. Send
bug reports using http://www.info-Zip.org/Zip-bug.html; see README for details.
注意:
`wine WinRAR.exe 'を使用してファイルを正常に抽出しているため、グラフィカルアーカイバに関する提案には特に関心がありません。
unzip -p file.Zip archivedfilename.ext > newfilename.ext
をお試しいただけますか?
私はPythonですべてのファイルを取得することができました:
import zipfile
z = zipfile.ZipFile('file.Zip')
for i, f in enumerate(z.filelist):
f.filename = 'file_{0:03}'.format(i)
z.extract(f)
また、ディレクトリエントリに対応するいくつかの空のファイルを取得します。
GNU Info-Zipパッケージには zipnote
というユーティリティが含まれており、Zipアーカイブ内のファイル名を編集したりファイルコメントを操作したりできます( "ノート")。
zipnote -w file.Zip <<<$'@ oldname\n@=newname'
古い名前を正確に知っている必要があるようです。ワイルドカードのサポートはありません。
また、一度に1つのファイルしか名前を変更できないようです。アーカイブ内のすべてのファイルの名前を変更するには、次のようになりました。
unzip -Z1 file.Zip |
awk '{ printf "file%06i %s\n", NR, $1 }' |
while read -r to from; do
printf '@ %s\n@=%s\n' "$from" "$to" | zipnote -w file.Zip
done
(正規化されたファイル名を出力するためのトリックに注意してください"$to"
Awkスクリプトの最初。)
nzipに提出されたバグ で、Yannis Tsop(ogiannhs)は2010-05-25に次のように書いています:#12
7-Zipを使用すると解決できます!
例えば:
LANG=el_GR.CP737 7z x -oPATH file.Zip convmv -r --notest -f utf-8 -t CP737 PATH/*