Perl — разложить 100к файлов

Задача: разложить 115к файлов типа nameYYYYMMDD по директориям типа YYYY/MM/DD/ (фотки с камеры наблюдения).
Решение: [cc lang=’perl’]#!/usr/bin/env perl
#
use warnings;
use strict;
use File::Path;
use File::Copy;

opendir DIR, «/home/camera» or die $!;
while(my $fname = readdir DIR) {
if ($fname =~ /cabinet(\d\d\d\d)(\d\d)(\d\d)/){
mkpath(«/home/camera/archive/$1/$2/$3»);
move(«/home/camera/$fname» ,»/home/camera/archive/$1/$2/$3/$fname») or die $!;
}
}
closedir DIR;
[/cc]

При этом на все про все 18 секунд времени:[cc lang=’bash’][camera@backup1 ~]$ date ; ./script/camera.pl ; date
Вт янв 12 12:52:51 MSK 2016
Вт янв 12 12:53:09 MSK 2016
[camera@backup1 ~]$ cd archive/
[camera@backup1 ~/archive]$ find . -type f | wc -l
114363
[camera@backup1 ~/archive]$ [/cc]

You can leave a response, or trackback from your own site.

Leave a Reply

Subscribe to RSS Feed