当前位置: 首页 > 知识库问答 >
问题:

如何在Perl中将tar文件解压到目标目录

邵锐
2023-03-14

我是Perl新手,我正在尝试编写一个脚本,该脚本获取一个tar文件的路径,检查其中是否有txt文件,如果是,则将文件提取到输出文件夹。这是我的代码:

#!/usr/bin/perl
use strict;
use warnings;

use Archive::Tar;
use File::Spec::Functions qw(catdir);

#checking if tar file contain a txt file, if yes extract it to a folder

my $tarPath    = 'path/to/tarArchive';
my $tar        = Archive::Tar->new($tarPath);
my @files      = $tar->list_files;
my $output_dir = 'C:/output/path';
foreach my $file (@files) {
    if ( $file =~ /txt$/ ) {
        my $extracted_file = catdir( $fileName,   $file );
        my $extracted_path = catdir( $output_dir, $file );
        $tar->extract( $extracted_file, $output_dir );
        print $extracted_file;

    }
}
exit 0;

当我运行这个脚本时,我收到一个错误:存档中没有这样的文件。

你能帮我理解我做错了什么,什么应该是正确的命令?

共有1个答案

萧煜
2023-03-14

Archive::Tar提取方法不允许您指定输出目录;它只允许输入文件列表。您需要使用extract_file方法:

    $tar->extract_file($extracted_file, $output_dir);
 类似资料:
  • 我有一个档案 *.tar.gz 如何将其解压缩到目标目录?

  • 我在使用共享资源压缩库创建目录的tar.gz时遇到了一个问题。我有一个目录结构如下。 我正在使用以下代码进行压缩。它运行良好,无一例外。但是,当我尝试解压缩该 tar.gz时,我得到一个名为“子DirTo压缩”的文件。它的大小是正确的,因此文件在焦油过程中清楚地相互附加。所需的输出将是一个目录。我不知道我做错了什么。任何明智的共享资源压缩器都可以让我走上正确的道路吗?

  • 我在Windows中使用Java8,我试图实现一件简单的事情。假设我有一个目录和一个目录。我每天都在尝试将文件从源移动到目的地。下面是一个简单的java代码,使用NIO; null

  • 本文向大家介绍Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法,包括了Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python3程序设计有所帮助。

  • 我有一个包含一些子目录的目录。我可以看到目录中带有“gci-Recurse *| %{ Write-host$_}”的文件。在这个给定的列表中有一些zip文件。我想在使用“展开存档”时将这些zip文件解压缩到一个名为zip文件的目录中。 如何将调用“gci-Recurse*|%{write host${}”与“Expand Archive”结合起来。

  • 本文向大家介绍CentOS下tar打包解压详解(解压到指定文件夹),包括了CentOS下tar打包解压详解(解压到指定文件夹)的使用技巧和注意事项,需要的朋友参考一下 本文介绍了tar命令、gzip, zcat 命令、bzip2, bzcat 命令、compress 命令、dd 命令、cpio 命令,具体如下: tar命令 解压文件到指定目录: tar [-cxtzjvfpPN] 文件与目录...