Использование ядра File :: Find и File :: Copy и при условии, что вы хотите, чтобы все .txt
файлы в $PATH1
были скопированы в $ENV{DIRWORK}
, а также при условии, что вы хотите, чтобы это произошло ...
use strict;
use warnings;
use File::Find;
use File::Copy;
die "ENV variable DIRWORK isn't set\n"
unless defined $ENV{DIRWORK} and length $ENV{DIRWORK};
die "DIRWORK $ENV{DIRWORK} is not a directory\n"
unless -d $ENV{DIRWORK};
my $PATH1 = q{/path/to/wherever};
die "PATH1 is not a directory" unless -d $PATH1;
find( sub{
# $_ is just the filename, "test.txt"
# $File::Find::name is the full "/path/to/the/file/test.txt".
return if $_ !~ /\.txt$/i;
my $dest = "$ENV{DIRWORK}/$_";
copy( $File::Find::name, $dest ) or do {
warn "Could not copy $File::Find::name, skipping\n";
return;
}
}, $PATH1 );
Попробуй;)
В качестве альтернативы, почему бы вам не использовать bash
?
$ ( find $PATH1 -type f -name '*.txt' | xargs -I{} cp {} $DIRWORK );