0

我想用 Perl 和Archive::Rar. 例如文件夹/root/pictures

我只找到了一种 rar 单个文件的方法。

我试图找到文件夹中的所有文件并将它们 rar,但是我总是/root/pictures在 rar 存档中将整个路径粘贴到它们 ( ) 上。

我只想要/pictures文件夹及其内容。那可能吗?

4

2 回答 2

1

存档中存储的文件的文件夹结构将与您传递给该Add方法的文件名相同。(尽管您可以使用该-excludepaths选项在没有任何包含文件夹的情况下添加它们。)

如果您在将文件添加到存档之前chdir进入目录,并将所有文件指定为etc.,那么结果应该是您想要的。\rootpictures\file1.jpg

像这样的东西

use strict;
use warnings;

use Archive::Rar;

use autodie;

chdir '\root';

my $rar = Archive::Rar->new(-archive => 'pictures.rar');

$rar->Add(-files => [ glob 'pictures\*' ]);

显然,如果您希望存档存储在其他位置,您可以添加 rar 文件名的路径。

于 2013-01-20T15:39:32.217 回答
0

首先,您必须从定义的目录中获取文件列表:

use File::Find;

my @content;
find( \&wanted, '/some/path');

sub wanted {
  push @content, $File::Find::name;
  return;
}

之后你可以使用 Archive::Rar 来打包它。

use Archive::Rar;
my $rar = Archive::Rar->new();
$rar->Add(
       -size => $size_of_parts,
       -archive => $archive_filename,
       -files => \@content,
);
于 2013-01-19T18:12:35.057 回答