[Bash] Listar los archivos de una carpeta e introducirlo en un array

Iniciado por Javidod, 7 Febrero 2018, 23:55 PM

0 Miembros y 1 Visitante están viendo este tema.

Javidod

Buenas, soy nuevo en este foro, he empezado con varios scripts básicos en bash para un proyecto de investigación que tengo, y no sé ni por donde empezar, así que iré al grano:

He estado buscando por internet lo que me parecía algo básico, pero no he encontrado nada, necesito guardar los nombres de los archivos (no contienen espacios en sus nombres)de una carpeta tanto con extensión como sin extensión en dos arrays diferentes. He conseguido guardarlos tanto con y sin extensión en una única variable (no array) pero a partir de ahí me pierdo.

También está el problema de que alguno de ellos tiene dos puntos en su nombre por ejemplo: crysis.bin.gz, por lo que al separarlo por el punto no funciona demasiado bien.

No sé si alguien podría echarme una mano, muchas gracias, un saludo.

PD: Seguramente sea algo básico, pero nunca había programado en bash, estoy empezando por mi cuenta y no soy muy asiduo a entornos linux.

Eleкtro

#1
Cita de: Javidod en  7 Febrero 2018, 23:55 PMTambién está el problema de que alguno de ellos tiene dos puntos en su nombre por ejemplo: crysis.bin.gz, por lo que al separarlo por el punto no funciona demasiado bien.

Si estás partiendo el string usando como delimitador el caracter de punto, y tenga la cantidad de puntos que tenga el nombre, tan solo debes descartar el último elemento partido, y esa será siempre la extensión del archivo. Claro que primero debes comprobar que el nombre de archivo contenga al menos 1 punto, o dicho de otro modo: una extensión.

De todas formas, al parecer la solución más apropiada y eficiente es mucho más simple que andar partiendo strings, se conoce como 'Shell Parameter Expansion':

Documentación:

PD: no recuerdo nada sobre el uso de Bash, no te puedo ayudar en lo demás, pero es cuestión de que busques un poco en San Google, ya que son dudas/problemas muy básicos que ya todo el mundo habrá preguntado alguna vez en la World Wide Web...

Saludos