elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Bash] Recortar nombre de archivos de una salida del comando ls (Solucionado)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Bash] Recortar nombre de archivos de una salida del comando ls (Solucionado)  (Leído 8,729 veces)
moikano→@


Desconectado Desconectado

Mensajes: 572


Cultiva tu mente y cuerpo, son tu única propiedad


Ver Perfil WWW
[Bash] Recortar nombre de archivos de una salida del comando ls (Solucionado)
« en: 22 Febrero 2012, 15:35 pm »

Hola.

Estoy intentando guardar los nombres de los archivos de una carpeta, haciendo un $ls <ruta carpeta>, en variables para luego utilizarlos.

Los nombres de los archivos tienen que ser sin extensión.

He estado probando pero no me aclaro, copie un código y fui modificando-lo hasta conseguir algo parecido a lo que pretendía tener, pero no lo consigo del todo.

El trozo de código es este:
Código:
#!/bin/bash
ruta=$(ls /home/moikano/Escritorio/ejerciciscript/videos/)
base="${ruta%%.*}"
ruta="${ruta##.*}"
ruta="${ruta%.*}"
base2="${ruta##.*}"
echo $base $base2

La salida del código es:
Código:
capitul2 capitul2.avi capitul

La salida que yo quisiera tener:
Citar
capitul2 capitul

Esto es lo máximo que he podido sacar, supongo que al final valdrá únicamente si hay 2 archivos, es decir, si la carpeta contiene mas de 2 archivos el script ( cuando este acabado y funcionando) no funcionará como debe ya que solo cojera 2 nombres de archivos.

Por si acaso os pongo la salida del comando:
Código:
 $ls /home/moikano/Escritorio/ejerciciscript/videos/
Es:
Código:
 capitul2.avi capitul.avi


Y si alguien pudiera remitirme a un manual o tutorial donde explicarán como se usan los parámetros ${variable%%.*} para modificar cadenas se lo agradecería.


« Última modificación: 29 Febrero 2012, 23:41 pm por moikano→@ » En línea

moikano→@


Desconectado Desconectado

Mensajes: 572


Cultiva tu mente y cuerpo, son tu única propiedad


Ver Perfil WWW
Re: [Bash script] Recortar nombre de archivos de una salida del comando ls
« Respuesta #1 en: 24 Febrero 2012, 19:29 pm »

Bueno, al final lo solucioné por mi cuenta.

La solución era esta.

Código:
ruta=/root/Desktop/videos
ruta2=$(ls $ruta/*.avi)
for nombres in $ruta2
do
nombres="${nombres##*/}"
nombres="${nombres%%.*}"
echo $nombres
done

El resultado es:
Código:
capitul2
capitul




No se si me expliqué mal o que no he dado tiempo a responder, pero bueno, esta es la solución por si a alguien le sirve.


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [Bash script] Recortar nombre de archivos de una salida del comando ls
« Respuesta #2 en: 24 Febrero 2012, 22:33 pm »

También pudiste haberlo hecho así:

Código
  1. ls -1 *.avi | while read file; do
  2. echo -e "${file%%.*}";
  3. done
  4.  
  5.  
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
moikano→@


Desconectado Desconectado

Mensajes: 572


Cultiva tu mente y cuerpo, son tu única propiedad


Ver Perfil WWW
Re: [Bash script] Recortar nombre de archivos de una salida del comando ls
« Respuesta #3 en: 25 Febrero 2012, 11:17 am »

Gracias por contestar

Citar
while read file; do

El read file es una función del while o se puede aplicar a mas estructuras?
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [Bash script] Recortar nombre de archivos de una salida del comando ls
« Respuesta #4 en: 25 Febrero 2012, 18:55 pm »

El read solo y el read con un while es solo como me ha tocado verlo, creo que son las únicas.

Aunque también puedes utilizar un comando después de un if.
Código:
if comando-salilda; then
....
fi

No sé si funcione.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
moikano→@


Desconectado Desconectado

Mensajes: 572


Cultiva tu mente y cuerpo, son tu única propiedad


Ver Perfil WWW
Re: [Bash script] Recortar nombre de archivos de una salida del comando ls
« Respuesta #5 en: 25 Febrero 2012, 19:27 pm »

Ok gracias
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Bash script] Introducir comando en una nueva terminal (SOLUCIONADO) « 1 2 »
Scripting
moikano→@ 10 14,062 Último mensaje 18 Noviembre 2010, 16:03 pm
por moikano→@
(solucionado )[BATCH] Ayuda con el comando DIR en archivos numéricos.
Scripting
SuperDraco 2 4,750 Último mensaje 27 Febrero 2011, 13:40 pm
por SuperDraco
[Bash] Abrir comando en otra pestaña de la shell (Solucionado)
Scripting
moikano→@ 5 14,479 Último mensaje 2 Marzo 2012, 19:28 pm
por moikano→@
[Bash] Error al recoger salida de un comando
Scripting
MeCraniDOS 0 1,776 Último mensaje 22 Febrero 2015, 19:58 pm
por MeCraniDOS
Imprimir salida comando con PRINTF (BASH)
Scripting
Eskizoide 2 2,293 Último mensaje 27 Noviembre 2017, 14:56 pm
por Eskizoide
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines