【发布时间】:2010-12-01 11:54:21
【问题描述】:
我想用 File::Find 归档所有 txt 文件,删除源文件并删除空目录。
我在使用 '$tar->rename( );' 重命名文件时遇到了困难因为我想将它们从完整路径名中剥离出来,只使用父目录/*.txt,但无论我尝试什么,代码都只会重命名一个文件。
我不知道执行“取消链接”功能的合适位置在哪里。
谢谢。
use strict;
use warnings;
use Archive::Tar;
use File::Find;
use File::Basename;
my $dir = "E:/";
my @files = ();
find(\&archive, $dir);
sub archive {
/\.txt$/ or return;
my $fd = $File::Find::dir;
my $fn = $File::Find::name;
my $folder = basename($fd);
my $file = $_;
push @files, $fn;
my $tar = Archive::Tar->new();
$tar->add_files(@files);
$tar->rename( $fn, $folder."\\".$file );
$tar->write($fd.'.tar');
unlink $fn;
finddepth(sub{rmdir},'.');
}
【问题讨论】:
标签: perl