Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: skan en 18 Mayo 2010, 16:01 PM

Título: Duda con un ejemplo simple en Perl
Publicado por: skan en 18 Mayo 2010, 16:01 PM
Buenas

Cómo sería el código en Perl que haga lo siguiente:


Lo ejecutas en un directorio en el que hay varios archivos comprimidos .rar

El script ejecuta unrar (o similar) que extrae cada archivo en un directorio con su mismo nombre
y si dentro de ese directorio hay un archivo readme.txt  lo renombra con el mismo nombre de antes

por ejemplo, si lo hiciesemos a mano:
unrar x nombre1.rar
cd nombre1
ren readme.txt nombre1.txt  (pero sólo si existe)
y sigue descomprimiendo ...




que el unrar lo busque en el path y en el mismo directorio.
Título: Re: Duda con un ejemplo simple en Perl
Publicado por: Novlucker en 18 Mayo 2010, 16:05 PM
"Duda con un ejemplo simple", no necesitas que el script haga nada más? como que renombre por fecha o algo así? :¬¬

Saludos
Título: Re: Duda con un ejemplo simple en Perl
Publicado por: leogtz en 19 Mayo 2010, 04:04 AM
¿Sistema operativo?
¿Por qué Perl si se pudiera usar directamente Bash?
Título: Re: Duda con un ejemplo simple en Perl
Publicado por: skan en 19 Mayo 2010, 13:08 PM
Porque si me acostumbro a hacerlo en Perl luego puedo hacer cosas más complejas.

Creo que ya lo tengo, más o menos

Código (perl) [Seleccionar]
my @ficheros = <*.rar>;
foreach my $fichero (@ficheros) {
   system("unrar x $fichero");
   my($nombre) = $fichero =~ /^(.+)\.rar$/i;
   if (-e "$nombre/readme.txt") {
       rename "$nombre/readme.txt", "$nombre/$nombre.txt";
   }
}