Perl,如何使用.txt扩展名文件夹提取.gz文件

时间:2013-08-21 19:36:16

标签: perl unzip file-extension gzipfile

我目前遇到这个问题,我的.gz文件是“some_name.txt.gz”(.gz不可见,但可以用File :: Type函数识别), 在.gz文件中,有一个名为“some_name.txt”的文件夹,其中包含其他文件和文件夹。

但是,当我从Archive :: Extract调用提取函数时,我无法像手动提取存档(名称为“some_name.txt”的文件夹及其内容一起提取),因为它只是将“some_name.txt”文件夹解压缩为.txt文件..

我一直在网上搜索答案,但没有一个是正确的解决方案。有办法解决这个问题吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

也许你可以使用File :: Type识别这些文件,用.gz扩展名而不是.txt重命名它们,然后尝试使用Archive :: Extract吗?

答案 1 :(得分:0)

来自Archive::Extract官方文件

“因为.gz文件永远不会保存目录,只能保存一个文件;”

我建议在文件夹上使用tar然后gz它。 这样您就可以使用Archive::Tar轻松提取特定文件:

官方文档示例:

  

$ tar-> extract_file($ file,[$ extract_path])   写一个条目,其名称相当于提供给磁盘的文件名。 (可选)接受第二个参数,即该条目将写入的完整本机路径(包括文件名)。   例如:

$tar->extract_file( 'name/in/archive', 'name/i/want/to/give/it' );
$tar->extract_file( $at_file_object,   'name/i/want/to/give/it' );
  

成功时返回true,失败时返回false。

希望这有帮助。

答案 2 :(得分:0)

gzip文件只能包含一个文件。如果您有一个包含文件夹以及多个其他文件和文件夹的存档文件,那么您可能有一个包含tar文件的gzip文件。或者,您可能有一个zip文件。

您能否详细介绍如何创建存档文件及其内容列表?