[SP-pm] ordenando arquivos.

Andre Carneiro andregarciacarneiro at gmail.com
Tue Jul 26 08:02:17 PDT 2011


Salve!

Tenho que ordenar 3 milhões de arquivos de um diretório(e isso tende a
aumentar). Mesmo que eu mova parte dos arquivos para outros diretórios,
ainda assim vai sobrar arquivo pra caramba.

Desse modo, eu pesquisei no perlmonks e outros lugares, e achei esse código
abaixo que até resolveria, se não fosse o problema de memória, pois usa uma
quantidade de memória proporcional a quantidade de arquivos.


<code>

#!/usr/bin/perl

use strict;
use warnings;
use DateTime;

my $start_time = time;

my %times = ();

opendir DIR, $ARGV[0] or die "Couldn't open $ARGV[0]; $!\n";

my @sorted =
sort {
    $times{$b} cmp $times{$a}; # Was cmp D'oh! Thanks [dws]
}
map {
$times{$_} = (stat $_)[9]; $_;
} readdir DIR;

closedir DIR or warn "Couldn't close $ARGV[0]; $!\n";
local $" = $/;
print "@sorted\n";

my $end_time = time;

my $enlapsed_time = $end_time - $start_time;

my $dt = DateTime->from_epoch( epoch => $enlapsed_time );

my $etime = $dt->hms(':');

print "\nCrapy time: $etime\n";

</code>

Alguém conhece um algoritmo onde, sei lá, eu pudesse ordernar parte desses
arquivos  e de depois juntar tudo de alguma forma, ou algo desse tipo?

Thx!


-- 
André Garcia Carneiro
Analista/Desenvolvedor Perl
(11)82907780
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110726/9832980a/attachment.html>


More information about the SaoPaulo-pm mailing list