[Perl] Leer contenido de un directorio y escribirlo en pequeños archivos
Mauricio Herrera Cuadra
mauricio en arareko.net
Mie Abr 30 12:50:16 CDT 2008
Quizás no necesites Perl, algo como esto es más rápido (en mi opinión):
-----------------------------------------------------------------
% mkdir files && cd files && ls /etc/ > list && split -l 15 list
% ls
list xaa xab xac xad xae xaf xag
% cat xaa
X11
aliases
amd.map
apmd.conf
auth.conf
bluetooth
crontab
csh.cshrc
csh.login
csh.logout
defaults
devd.conf
devfs.conf
dhclient.conf
disktab
% cat xab
dumpdates
fbtab
fstab
ftpusers
gettytab
gnats
group
host.conf
hosts
hosts.allow
hosts.equiv
hosts.lpd
inetd.conf
isdn
libmap.conf
-----------------------------------------------------------------
Espero te sirva.
Saludos,
Mauricio.
--
MAURICIO HERRERA CUADRA
mauricio en arareko.net
http://www.arareko.net/
----- Original Message ----
Date: Wed, 30 Apr 2008 01:19:08 -0500 (CDT)
From: "Carmen Marcela Alegria C." <alegria071 en yahoo.com.mx>
Subject: [Perl] Leer contenido de un directorio y escribirlo en
pequeños archivos
To: perl en tlali.iztacala.unam.mx
Message-ID: <605773.57096.qm en web38007.mail.mud.yahoo.com>
Content-Type: text/plain; charset=iso-8859-1
Hola Lista,
Tengo un directorio con un poco mas de 25 mil
archivos y es un poco complicado manejarlos. Por eso
quiero que los nombres de los archivos sean guardados
en archivos con X cantidad de lineas para procesar
dichas rutas despues.
A esta hora se me ocurrio asi, pero se que quiza no
es la mejor forma de hacerlo.
#!/usr/bin/perl -w
$c=1;
$i=0;
opendir(DIR, $ARGV[0]) or die "can't opendir
$ARGV[0]: $!";
while (defined($file = readdir(DIR))) {
if ( $i > 15){
$c++;
$i=0;
}
open FH, ">>./arch-$c" || die " can't open file ";
print FH "$file\n";
close FH;
$i++;
}
closedir(DIR);
Agradezco de antemano cualquier sugerencia para
mejorarlo.
Saludos,
Marcela Alegria
Más información sobre la lista de distribución Perl