• Publicidad

Alguna función para borrar directorios no vacíos

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Alguna función para borrar directorios no vacíos

Notapor rorris » 2005-08-20 13:44 @614

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.
rorris
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2005-06-14 18:01 @792

Publicidad

Notapor kidd » 2005-08-20 17:45 @781

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
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Borrar directorios de forma recursiva

Notapor Joaquin » 2005-08-21 11:28 @519

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
Joaquin
 

Notapor rorris » 2005-08-22 14:05 @628

Gracias Joaquin y, por supuesto, gracias kidd. Al final he utilizado tu segunda opcion, Joaquin. Me parecio la mas sencilla.

Mil gracias. Linux power!!!
rorris
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2005-06-14 18:01 @792

Notapor explorer39 » 2005-09-04 13:10 @590

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
explorer39
 


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado