【问题标题】:How to copy a list of files in perl from one directory to another如何将perl中的文件列表从一个目录复制到另一个目录
【发布时间】:2016-09-09 10:00:48
【问题描述】:

在 UNIX 中,根据文件格式和上次修改日期从 DIRECTORY_PATH 获取文件并将文件移动到 ARCHIVE_DIRECTORY

使用下面的代码

DIRECTORY_PATH=/apps/data/central_archive/
NO_OF_DAYS_ARCHIVE=10
FILE_FORMAT=txt
EXEC_CMD=mv
ARCHIVE_DIRECTORY=/apps/data/archive/

res=`find $DIRECTORY_PATH -mtime $NO_OF_DAYS_ARCHIVE -name "*$FILE_FORMAT*" -type f|grep "$DIRECTORY_PATH[^/]*$" | grep -v '/rf/'`

这里如何在 Perl 中实现相同的逻辑?

【问题讨论】:

  • 为什么要在 Perl 中这样做?

标签: file grep perl copy


【解决方案1】:

一种方式,使用File::Find::Rule

use warnings;
use strict;

use File::Copy;
use File::Find::Rule;

my $dir = 'src/';
my $arch_dir = 'archive/';
my $days = 10;
my $type = '*.txt';

if (! -d $arch_dir){
    mkdir $arch_dir or die $!;
}

my @files = File::Find::Rule->file()
                            ->name($type)
                            ->mtime('> ' . (time() - $days*24*60*60))
                            ->in($dir);

for (@files){
    move $_, $arch_dir or die $!;
    print "moved $_ to $arch_dir/\n";
}

【讨论】:

    猜你喜欢
    • 2012-02-15
    • 2017-11-18
    • 2012-03-24
    • 2013-06-01
    • 2020-06-22
    • 2014-08-12
    • 2013-10-24
    • 2011-10-24
    相关资源
    最近更新 更多