前一段时间我使用Linux“tar -cf”命令压缩了一个应用程序。那时,一些文件名使用不同的语言。
现在,当我使用“tar -xf”解压缩时,它会将另一种语言的文件名显示为问号。
有没有办法在我解压缩时保留原始文件名?
非常感谢您的帮助。
答案 0 :(得分:1)
好问题!预计像任何Unix命令一样,tar可以将其输出传输到另一个程序,如果可能的话包括文件名数据。一个快速的Google搜索显示情况就是这样:如本博文中所述,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