[opensuse-es] meter en una variable (array) salida de un ls
Hola NEcesito hacer una cosa en shell y por mas que miro no lo consigo a ver si me podeis ayudar. yo por comando hago. ls -l | awk '{print $9}' y eso me lista los nombres de ficheros de un dir. hay manera de meter eso en un "objeto" array o lo que fuera para luego sobre el hacer un for y por cada entrada hacer un tratamiento? me podeis ayudar? Gracias -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El Tue, 30 Nov 2010 17:57:24 +0100, koxkorrita escribió:
NEcesito hacer una cosa en shell y por mas que miro no lo consigo a ver si me podeis ayudar. yo por comando hago. ls -l | awk '{print $9}'
y eso me lista los nombres de ficheros de un dir.
hay manera de meter eso en un "objeto" array o lo que fuera para luego sobre el hacer un for y por cada entrada hacer un tratamiento?
me podeis ayudar?
No sé si es esto lo que buscas: *** #/bin/bash lista=(`ls -l | awk '{print $9}'`) echo "Array items:" for item in ${lista[*]} do echo $item done echo "Nº de elementos: ${#lista[*]}" echo "Elemento nº2: " ${lista[1]} *** Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Muchas gracias
como meteria eso en un for con un contador?
tipico de java vor(int 1 =0;i El Tue, 30 Nov 2010 17:57:24 +0100, koxkorrita escribió: NEcesito hacer una cosa en shell y por mas que miro no lo consigo a ver
si me podeis ayudar.
yo por comando hago.
ls -l | awk '{print $9}' y eso me lista los nombres de ficheros de un dir. hay manera de meter eso en un "objeto" array o lo que fuera para luego
sobre el hacer un for y por cada entrada hacer un tratamiento? me podeis ayudar? No sé si es esto lo que buscas: ***
#/bin/bash lista=(`ls -l | awk '{print $9}'`) echo "Array items:"
for item in ${lista[*]}
do
echo $item
done echo "Nº de elementos: ${#lista[*]}"
echo "Elemento nº2: " ${lista[1]}
*** Saludos, --
Camaleón --
Para dar de baja la suscripción, mande un mensaje a:
opensuse-es+unsubscribe@opensuse.org
Para obtener el resto de direcciones-comando, mande
un mensaje a:
opensuse-es+help@opensuse.org --
Para dar de baja la suscripción, mande un mensaje a:
opensuse-es+unsubscribe@opensuse.org
Para obtener el resto de direcciones-comando, mande
un mensaje a:
opensuse-es+help@opensuse.org
El Tue, 30 Nov 2010 19:38:44 +0100, koxkorrita escribió:
El Tue, 30 Nov 2010 17:57:24 +0100, koxkorrita escribió:
*** #/bin/bash
lista=(`ls -l | awk '{print $9}'`)
echo "Array items:" for item in ${lista[*]} do echo $item done
echo "Nº de elementos: ${#lista[*]}" echo "Elemento nº2: " ${lista[1]} ***
Muchas gracias
como meteria eso en un for con un contador? tipico de java vor(int 1 =0;i
para así coger el valor del contador y con el hacer las cosas que tengo que hacer en elos ficheros.
Muchas gracias por la ayuda
No entiendo... al definir una matriz ya tienes el contador de todos los elementos en la variable "${#lista[*]}" y puedes manipular/ejecutar las órdenes que quieras según el contenido o la posición de cada uno de los elementos. ¿Qué es lo que quieres hacer exactamente? Mejor si pones un ejemplo práctico :-) Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
lo que quiero es el resultado de `ls -l | awk '{print $9}'` que es una coleccion de ficheros meterlos en una lista para recorrermelos y a cada uno de error renombrarlos (moverlos) con un 1_ por delante donde el número 1 es un correlativo (tantos ficheros tanto sube ese número) Muchas gracias por vuestra ayuda, de veras -----Mensaje original----- De: Camaleón [mailto:noelamac@gmail.com] Enviado el: martes, 30 de noviembre de 2010 20:42 Para: opensuse-es@opensuse.org Asunto: [opensuse-es] Re: meter en una variable (array) salida de un ls El Tue, 30 Nov 2010 19:38:44 +0100, koxkorrita escribió:
El Tue, 30 Nov 2010 17:57:24 +0100, koxkorrita escribió:
*** #/bin/bash
lista=(`ls -l | awk '{print $9}'`)
echo "Array items:" for item in ${lista[*]} do echo $item done
echo "Nº de elementos: ${#lista[*]}" echo "Elemento nº2: " ${lista[1]} ***
Muchas gracias
como meteria eso en un for con un contador? tipico de java vor(int 1 =0;i
para así coger el valor del contador y con el hacer las cosas que tengo que hacer en elos ficheros.
Muchas gracias por la ayuda
No entiendo... al definir una matriz ya tienes el contador de todos los elementos en la variable "${#lista[*]}" y puedes manipular/ejecutar las órdenes que quieras según el contenido o la posición de cada uno de los elementos. ¿Qué es lo que quieres hacer exactamente? Mejor si pones un ejemplo práctico :-) Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Content-ID:
lo que quiero es el resultado de `ls -l | awk '{print $9}'`
Eso en mi sistema produce una guarrería: Canción 02 - -> - -> - - Y no sigo.
que es una coleccion de ficheros meterlos en una lista para recorrermelos y a cada uno de error renombrarlos (moverlos) con un 1_ por delante donde el número 1 es un correlativo (tantos ficheros tanto sube ese número)
Pues eso en el ejemplo que te puse es una chorrada. Tienes el numeral y el nombre... for((i=0; i<$NUMEROFICHEROS; i++)) do echo $i - ${FILENAMES[$i]} mv "${FILENAMES[$i]}" "$i_${FILENAMES[$i]}" done - -- Saludos Carlos E. R. (desde 11.2 x86_64 "Emerald" en Telcontar) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (GNU/Linux) iEYEARECAAYFAkz1naUACgkQtTMYHG2NR9WL0wCeK9hZNinK72g0GcFHuHYapUEP Z7UAnAmumXzUZdPIQI1r6J5gaxiCBC5Y =eb+j -----END PGP SIGNATURE-----
El Wed, 01 Dec 2010 00:25:43 +0100, koxkorrita escribió:
como meteria eso en un for con un contador? tipico de java vor(int 1 =0;i
para así coger el valor del contador y con el hacer las cosas que tengo que hacer en elos ficheros.
Muchas gracias por la ayuda
No entiendo... al definir una matriz ya tienes el contador de todos los elementos en la variable "${#lista[*]}" y puedes manipular/ejecutar las órdenes que quieras según el contenido o la posición de cada uno de los elementos.
¿Qué es lo que quieres hacer exactamente? Mejor si pones un ejemplo práctico :-)
lo que quiero es el resultado de `ls -l | awk '{print $9}'` que es una coleccion de ficheros meterlos en una lista para recorrermelos y a cada uno de error renombrarlos (moverlos) con un 1_ por delante donde el número 1 es un correlativo (tantos ficheros tanto sube ese número)
Ok. Pero no sería necesario una matriz para eso :-) *** #/bin/bash lista=(`ls -l | awk '{print $9}'`) conta=0 for item in ${lista[*]} do conta=`expr $conta + 1`; mv $item $conta"_"$item done *** sm01@stt008:~/Desktop/testo$ ls -l total 4 -rw-r--r-- 1 sm01 sm01 0 dic 1 08:25 archivo1 -rw-r--r-- 1 sm01 sm01 0 dic 1 08:25 archivo2 -rw-r--r-- 1 sm01 sm01 0 dic 1 08:25 archivo3 -rw-r--r-- 1 sm01 sm01 171 dic 1 08:23 test.sh sm01@stt008:~/Desktop/testo$ sh ./test.sh sm01@stt008:~/Desktop/testo$ ls -l total 4 -rw-r--r-- 1 sm01 sm01 0 dic 1 08:25 1_archivo1 -rw-r--r-- 1 sm01 sm01 0 dic 1 08:25 2_archivo2 -rw-r--r-- 1 sm01 sm01 0 dic 1 08:25 3_archivo3 -rw-r--r-- 1 sm01 sm01 171 dic 1 08:23 4_test.sh Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2010-11-30 a las 17:57 +0100, koxkorrita@laudio.info escribió:
NEcesito hacer una cosa en shell y por mas que miro no lo consigo a ver si me podeis ayudar. yo por comando hago. ls -l | awk '{print $9}'
y eso me lista los nombres de ficheros de un dir.
hay manera de meter eso en un "objeto" array o lo que fuera para luego sobre el hacer un for y por cada entrada hacer un tratamiento?
Array de bash? Si. Sin comprobar, son partes alteradas de un script mio: ls tupatron > fichero declare -a FILENAMES NUMEROFICHEROS=0 while read FILES ; do NUMEROFICHEROS=`expr $NUMEROFICHEROS + 1` FILENAMES[$NUMEROFICHEROS]="$FILES" done < fichero for((i=0; i<$NUMEROFICHEROS; i++)) do echo $i - ${FILENAMES[$i]} done - -- Saludos Carlos E. R. (desde 11.2 x86_64 "Emerald" en Telcontar) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (GNU/Linux) iEYEARECAAYFAkz1YHYACgkQtTMYHG2NR9XZeACaAqWu22KT/u2swWE1x9uiNPKO JQAAniKfJdgTgcM8Kjq9zlfVzyg9Fw9B =TCho -----END PGP SIGNATURE-----
participants (4)
-
Camaleón
-
Carlos E. R.
-
koxkorrita
-
koxkorrita@laudio.info