Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Перемещение Файлов


Автор: WTF4XZ 28.3.2010, 02:05
Доброго времени суток!
Вот начал изучать Perl и возникла такая проблема.
Требуется производить перемещения файлов по маске как на пример в Windows move C:\papka\*.txt D:\papka\*.txt
но проблема в том что стандартные перловкие move и rename этого делать не умеют. Или просто я совсем не понимаю как в них это сделать.

Автор: Egik2 28.3.2010, 10:24
Вот пример кода:

Код

#!/usr/bin/perl

use strict;

my ($dir_from, $dir_to) = ("C://test//test1", "C://test//test2");

opendir(DIR, $dir_from) or die "Can't open dir $!";
my $file;
while ($file = readdir(DIR)) {
    if($file =~ /^\./) {
        next;
    }
    rename $dir_from."//".$file, $dir_to."//".$file;
}


Здесь, в условии 
Код

if($file =~ /^\./) {
        next;
    }

внутри цикла можешь проверять файлы на какую хочешь маску  smile 

Автор: Pfailed 28.3.2010, 14:16
Egik2, можно попроще с помощью глоббинга.

Код

use strict;
use File::Basename;

foreach my $oldname(</tmp/1/*.txt>)
{
    my $newname = "/tmp/2/" . basename($oldname);
    rename ($oldname, $newname);
}

Автор: birdfree 28.3.2010, 14:49
Большое всем спасибо! Вы мне очень помогли))
P.S. WTF4XZ это акк моего друга я от  него задал вопрос

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)