Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Alguna funcion para borrar directorios no vacios?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto
Mensaje Sab Ago 20, 2005 12:44 pm
rorris
Perlero Nuevo
Perlero Nuevo
Registrado: 14 Jun 2005
Mensajes: 21
Alguna funcion para borrar directorios no vacios? Responder citando

Necesito borrar un directorio que no este vacio con perl, pero la funcion 'rmdir' solo funciona con directorios vacios. Tambien he probado 'unlink' y nada. Existe de verdad alguna funcion para hacer esto o tendria que hacer un script que mirara en un directorio y fuera borrando uno a uno los ficheros y subdirectorios de este?

Gracias de antemano.
Mensaje Sab Ago 20, 2005 4:45 pm
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

Hola:

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

Código:
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.baboonsoftware.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
Mensaje Dom Ago 21, 2005 10:28 am
Joaquin
Perlero Nuevo
Perlero Nuevo
Registrado: 13 Ago 2005
Mensajes: 12
Ubicación: Valladolid, España
Borrar directorios de forma recursiva Responder citando

Código:
use Sysadm::Install 'rmf';

rmf( $dir );
Sysadm::Install;

Código:
use File::Path;

rmtree( $dir, 1, 1);
File::Path;
Mensaje Lun Ago 22, 2005 1:05 pm
rorris
Perlero Nuevo
Perlero Nuevo
Registrado: 14 Jun 2005
Mensajes: 21
Responder citando

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

Mil gracias. Linux power!!!
Mensaje Dom Sep 04, 2005 12:10 pm
explorer39
Perlero Frecuente
Perlero Frecuente
Registrado: 23 Ago 2005
Mensajes: 126
Ubicación: Valladolid, España
Responder citando

rorris escribió:
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 Very Happy
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group