2012/5/19 Alfonso Egea Callejas <a.egeacalle...@gmail.com>: > El 19/05/12, "Matías A. Bellone" <matiasbell...@gmail.com> escribió: >> On 05/19/2012 01:06 PM, Alfonso Egea Callejas wrote: >>> Hola a todos. >>> >>> Me interesaría que en un script se utilizase el "primer" elemento de >>> una carpeta únicamente para llevar a cabo una acción. Es decir si: >>> >>> $ ls carpeta >>> aa bb cc >>> >>> busco una orden que devuelva aa. >>> >>> Buscando con ls --help, man ls y google lo más parecido que he >>> encontrado es romper un ciclo for con break: >>> >>> for i in `ls carpeta`; do >>> echo $i >>> break >>> done >>> >>> pero me parece raro que no haya una opción de ls para listar >>> únicamente el primer elemento... sabéis si la hay? >>> >> >> no que yo sepa, pero podés encadenar comandos y para sacar los elementos >> del tope de una lista, tenés head: >> >> $ ls carpeta | head -n1 >> aa > > Sí, acabo de encontrarlo también. Usando pipes entre ls y head o tail > puedes obtener "todas" las combinaciones posibles. Ejemplo: > > $ ls carpeta | head -2 #muestra los dos primeros > aa > bb > > $ ls carpeta | tail -1 #muestra el último > cc > > $ ls carpeta | head -2 | tail -1 #muestra el segundo > bb > > Lástima no poder acceder a la "posición" deseada directamente con ls > para que quedase más limpio :( pero bueno, todo tiene solución :D Para sacar la línea N de un fichero, mejor usa sed, awk, o perl Ejemplos: ls | sed -n 'Np' ls | awk 'NR == N' ls | perl -ne 'print if ($. == N)'
Si la entrada tiene muchas líneas, mejor salirte en cuanto imprimes :-) (usando q en sed, o exit en perl / awk) Un saludo -- To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/cal5ymzsza0j2jmjzywqnmla4_ffb5r1f8qkh-dnus9jmakr...@mail.gmail.com