我想用Perl和Archive::Rar
來提取整個文件夾。例如文件夾/root/pictures
。Perl Rar整個文件夾
我發現只有一種方法來rar單個文件。
我試圖找到文件夾中的所有文件,然後在rar壓縮文件中保存整個路徑(/root/pictures
)。
我只想要/pictures
文件夾及其內容。那可能嗎?
我想用Perl和Archive::Rar
來提取整個文件夾。例如文件夾/root/pictures
。Perl Rar整個文件夾
我發現只有一種方法來rar單個文件。
我試圖找到文件夾中的所有文件,然後在rar壓縮文件中保存整個路徑(/root/pictures
)。
我只想要/pictures
文件夾及其內容。那可能嗎?
首先,你必須從定義目錄中獲取文件的列表:
use File::Find;
my @content;
find(\&wanted, '/some/path');
sub wanted {
push @content, $File::Find::name;
return;
}
之後,你可以使用存檔::的RAR收拾它。
use Archive::Rar;
my $rar = Archive::Rar->new();
$rar->Add(
-size => $size_of_parts,
-archive => $archive_filename,
-files => \@content,
);
存儲在歸檔文件的文件夾結構將是一樣的,你傳遞給Add
方法的文件名。 (雖然你可以添加它們,而完全不使用-excludepaths
選擇任何包含的文件夾。)
如果chdir
到\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文件名的路徑。
你是指路徑而不是包? –