我想用 Perl 和Archive::Rar
. 例如文件夹/root/pictures
。
我只找到了一种 rar 单个文件的方法。
我试图找到文件夹中的所有文件并将它们 rar,但是我总是/root/pictures
在 rar 存档中将整个路径粘贴到它们 ( ) 上。
我只想要/pictures
文件夹及其内容。那可能吗?
我想用 Perl 和Archive::Rar
. 例如文件夹/root/pictures
。
我只找到了一种 rar 单个文件的方法。
我试图找到文件夹中的所有文件并将它们 rar,但是我总是/root/pictures
在 rar 存档中将整个路径粘贴到它们 ( ) 上。
我只想要/pictures
文件夹及其内容。那可能吗?
存档中存储的文件的文件夹结构将与您传递给该Add
方法的文件名相同。(尽管您可以使用该-excludepaths
选项在没有任何包含文件夹的情况下添加它们。)
如果您在将文件添加到存档之前chdir
进入目录,并将所有文件指定为etc.,那么结果应该是您想要的。\root
pictures\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 文件名的路径。
首先,您必须从定义的目录中获取文件列表:
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,
);