• Publicidad

Acceder a los archivos atravesando varios directorios

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Acceder a los archivos atravesando varios directorios

Notapor paloman » 2011-10-30 17:42 @779

Hola a todos, acabo de empezar con esto del perl y estoy perdidísimo :oops:

Estoy trabajando con unas carpetas que contienen una gran cantidad de archivos (guardados en diferentes carpetas y a diferentes niveles) y necesitaría crear algún programa que fuese capaz de acceder a esos archivos, capturar la información que tienen y copiarlo a otro archivo.

Me explico:

/home/usuario/documentos/

Ahí tengo varios directorios: dir1, dir2, dir3...

y dentro de esos hay más directorios: subdir1, subdir2...

que contienen los archivos: arch1, arch2...

Desconozco el número de subdirectorios que hay en cada nivel, pero puedo conocer para cada caso el número de niveles de directorios que tengo, es decir, no sé cuántos directorios dir hay en el "primer nivel", no sé cuántos directorios subdir hay en el "segundo nivel", no sé cuántos directorios subsubdir hay en el "tercer nivel"... pero sí que sé que como máximo tengo (por ejemplo) 5 niveles de directorios:

/home/usuario/documentos/dir1/subdir1/subsubdir1/subsubsubdir1/subsubsubsubdir1/archivo.html

Mi intención sería tener un código que me permita acceder a TODOS LOS ARCHIVOS de /documentos/ y copiar su contenido en un nuevo archivo.

¿Se entiende la explicación? (Lo siento pero no me manejo bien con estas cosas y no sé si se entiende bien la idea que tengo.)
Es esto posible?


Muchas gracias y un saludo, cualquier ayuda me vendrá bien ya que como digo, apenas acabo de empezar a usar perl
paloman
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2011-10-30 17:29 @770

Publicidad

Re: Acceder a los archivos atravesando varios directorios

Notapor explorer » 2011-10-30 18:18 @804

Bienvenido a los foros de Perl en español, paloman.

El recorrer de forma recursiva un árbol de directorios es una de las tareas clásicas que a veces hay que hacer. Muchas veces las mandan los profesores como tarea o ejercicio, porque es un buen entrenamiento de programación: recordar en qué nivel estás, apuntar todos los subdirectorios, entrar en cada uno de ellos y repetir la operación de forma recursiva, etc.

Pero si solo se trata de resolver un problema, en Perl lo más cómodo es usar el módulo File::Find o alguno de sus derivados.

En UNIX, esta labor la hace el comando find.

La distribución básica de Perl trae tanto a File::Find como el script find2perl, que traduce un comando find a un programa Perl que usa el módulo File::Find, de tal manera que ese programa hace las mismas operaciones que el comando find. Se puede usar como semilla para hacer el programa mayor, por ejemplo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Acceder a los archivos atravesando varios directorios

Notapor paloman » 2011-11-10 16:08 @714

Muchas gracias por la respuesta explorer, no he podido ponerme con ello antes y con lo que he estado estos días un ratillo han sido cosas como abrir o editar un archivo así que ya ves cual es mi nivel de Perl :oops:

De todas formas este fin de semana me pondré más, que tengo tiempo y te comento si he conseguido algo, aunque en estos momentos los módulos y demás cosas que me mencionan los veo lejísimos, pero le echaré un vistazo a ver si soy capaz de hacer algo.

Un saludo y muchas gracias.

PD: la verdad que apenas viendo un poco el foro, el Perl da una grandísima cantidad de posibilidades que ni me imaginaba (y yo dando toda la vida C++ :lol: )
paloman
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2011-10-30 17:29 @770

Re: Acceder a los archivos atravesando varios directorios

Notapor explorer » 2011-11-10 16:22 @724

paloman escribiste:PD: la verdad que apenas viendo un poco el foro, el Perl da una grandísima cantidad de posibilidades que ni me imaginaba (y yo dando toda la vida C++ :lol: )

Es que cada lenguaje tiene su nicho o un tipo determinado de problema que resuelve de forma cómoda.

Mientras que Perl puede resolver un problema en unos pocos segundos, el C++ es capaz de ejecutar los programas mucho más rápido. Todo depende de qué tiempo nos interesa ahorrar más: la del programador (que tenemos que pagarle el salario a final de mes), o la del ordenador (pues el programa será ejecutado miles de veces por minuto).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados