Página 1 de 1

Alguna función para borrar directorios no vacíos

NotaPublicado: 2005-08-20 13:44 @614
por rorris
Necesito borrar un directorio que no este vacío con Perl, pero la función 'rmdir' solo funciona con directorios vacíos. También he probado 'unlink' y nada. ¿Existe de verdad alguna función para hacer esto o tendría que hacer un script que mirara en un directorio y fuera borrando uno a uno los ficheros y subdirectorios de éste?

Gracias de antemano.

NotaPublicado: 2005-08-20 17:45 @781
por kidd
Hola:

Por ejemplo si estuvieras en un SO tipo windows, podrías hacer algo así:

Código: Seleccionar todo
system('deltree DIR');


Aquí lo que estarías haciendo es ejecutar un comando externo a perl usando la función system().

Ahora si quieres hacer todo usando funciones internas de perl, entonces si tienes que eliminar todo el contenido de tu directorio antes de poder eliminarlo. Para ello te recomiendo que uses el módulo File::Find, aquí en el sitio hay un tutorial:
http://perlenespanol.com/archives-tut/000135.html

Con este módulo vas a poder ir a través de todos los archivos de tu directorio e irlos eliminando de manera muy sencilla.


SALUDOS

Borrar directorios de forma recursiva

NotaPublicado: 2005-08-21 11:28 @519
por Joaquin
Sysadm::Install
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use Sysadm::Install 'rmf';

rmf( $dir );
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


File::Path
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use File::Path;

rmtree( $dir, 1, 1);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

NotaPublicado: 2005-08-22 14:05 @628
por rorris
Gracias Joaquin y, por supuesto, gracias kidd. Al final he utilizado tu segunda opcion, Joaquin. Me parecio la mas sencilla.

Mil gracias. Linux power!!!

NotaPublicado: 2005-09-04 13:10 @590
por explorer39
rorris escribiste:Me parecio la mas sencilla.

Es la más sencilla porque File::Path viene incluído en la distribución base de Perl, asi que siempre está presente, mientras que Sysadm::Install debes instalarle.
Yo utilizo la primera, por la sencilla idea de que sólo es un parámetro, el directorio que quiero borrar.
Al final, da igual. rmf llama a rmtree :D