1

少し前に、Linux の「tar -cf」コマンドを使用してアプリケーションを圧縮しました。当時、一部のファイル名は別の言語でした。

「tar -xf」を使用して解凍すると、他の言語のファイル名が疑問符として表示されます。

解凍したときに元のファイル名をそのまま保持する方法はありますか?

あなたの助けは非常に高く評価されています。

4

1 に答える 1

1

良い質問 !他の Unix コマンドと同様に、tar は、可能であればファイル名データを含めて、その出力を別のプログラムにパイプすることができると予想されます。このブログ投稿で説明されているように、GNU tar は --to-command パラメーターをサポートしており、ディレクトリを直接操作する代わりにパイプに出力を書き込みます。

http://osmanov-dev-notes.blogspot.com.br/2010/07/how-to-handle-filename-encodings-in.html

したがって、引用された投稿で行われているように、ファイル名を UTF-8 に変換するスクリプトを作成するだけです。本文にも記載されている別のオプションは、それを読んだ後に明らかになるもので、単純にすべてを抽出してから、ディレクトリ内のすべてのファイルを変換するスクリプトを作成することです。これを行う簡単な php スクリプトがリンクにあります。

最後に、スクリプト言語の助けを借りて、いつでも独自のカスタム tar バージョンを作成できます。これは簡単です。たとえば、Python には、標準ライブラリに組み込まれた tarfile モジュールがあります。

http://docs.python.org/2/library/tarfile.html#examples

TarFile.extractfile()、shutils.copyfileobj()、および str.decode() をループで使用して、ファイル名のエンコーディングを変更しながらファイルを手動で抽出できます。

参考文献:

http://www.gnu.org/software/tar/manual/tar.html#SEC84

http://docs.python.org/2/library/tarfile.html

http://www.manpagez.com/man/1/iconv/

于 2013-02-16T16:55:37.837 に答える