Duda con un ejemplo simple en Perl

Iniciado por skan, 18 Mayo 2010, 16:01 PM

0 Miembros y 1 Visitante están viendo este tema.

skan

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.

Novlucker

"Duda con un ejemplo simple", no necesitas que el script haga nada más? como que renombre por fecha o algo así? :¬¬

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

leogtz

¿Sistema operativo?
¿Por qué Perl si se pudiera usar directamente Bash?
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

skan

#3
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";
   }
}