Existen ocasiones en las cuales deseamos borrar un archivo o un directorio que se encuentra en otro directorio y también dentro de sus subdirectorios. Un ejemplo de ésto, son los archivo .svn que usa Subversion.
Para ejemplificar lo antes mencionado pondré el siguiente ejemplo:
$ rm -rf /home/javoaxian/proyecto/.svn /home/javoaxian/proyecto/modulo1/.svn /home/javoaxian/proyecto/modulo2/.svn
Esto es muy tedioso y tardado, para lo cual, realizé este script en perl, donde le puedes indicar el archivo o directorio que deseas eliminar y en que directorio lo va a buscar.
Aquí les dejo el código del script:
#!/usr/bin/perl
# Creado por: JavoAxian
# Año: 2007
$elementoABorrar = $ARGV[0];
$directorio = $ARGV[1];
if($elementoABorrar eq "")
{
print "Ingresa el Archivo/Directorio a borrar\n";
exit(0);
}
elsif($directorio eq "")
{
print "Ingresa el Directorio donde se encuentra el Archivo/Directorio a " .
"borrar\n";
exit(0);
}
$buscar = `find $directorio -name $elementoABorrar -print`;
@directorios = split(/\n/,$buscar);
print "Iniciando la eliminación del archivo/directorio: $elementoABorrar en " .
"el directorio: $directorio\n";
for($contador=0;$contador<@directorios;$contador++)
{
$dir = $directorios[$contador];
`rm -rf "$dir"`;
print "Archivo/Directorio eliminado: $dir\n";
}
print "Finalizando la eliminación del Archivo/Directorio: $elementoABorrar\n";
Copien el código anterior y peguenlo en un archivo. Para ejemplificar le pondré al programa el nombre de borrarArchivosRecursivamente.pl.
Para usarlo, deberemos darle permisos de ejecusión y posteriormente correr el comando recibiendo como argumentos el archivo o directorio para borrar y el directorio donde se encuentra el archivo a borrar:
$ chmod 755 borrarArchivosRecursivamente.pl
$ ./borrarArchivosRecursivamente.pl .svn /home/javoaxian/proyecto
$ ./borrarArchivosRecursivamente.pl .svn /home/javoaxian/proyecto
La salida sería algo como ésto:
Iniciando la eliminación del archivo/directorio: .svn en el directorio: proyecto
Archivo/Directorio eliminado: proyecto/.svn
Archivo/Directorio eliminado: proyecto/modulo2/.svn
Archivo/Directorio eliminado: proyecto/modulo1/.svn
Finalizando la eliminación del Archivo/Directorio: .svn
Archivo/Directorio eliminado: proyecto/.svn
Archivo/Directorio eliminado: proyecto/modulo2/.svn
Archivo/Directorio eliminado: proyecto/modulo1/.svn
Finalizando la eliminación del Archivo/Directorio: .svn
Espero que les pueda servir.
7 comentarios:
Fue muy util tu script, funciono a la perfeccion, agradezco tu colaboracion.
De nada, fue un placer que te haya sido de utilidad.
Pues muy util tambien para mí, pues me he quedado un poco alucinado que el rm no funcione recursivamente como debería hacerlo.
Un apunte a tu script: si quereis que borre en directorios que contengan espacios tienes que modificar la siguiente linea así:
`rm -rf "$dir"`;
Que bueno que te fue de utilidad.
Gracias por tu observación, ya agregué el cambio que sugieres al script.
Saludos!!!
gracias loco me salvast la vida, :D
anduvo muy bien
Grossoooo!!..me salvaste..muy buen script
Buenísimo el script
Publicar un comentario