[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ls y break



El 20/05/12, Javier Barroso <javibarroso@gmail.com> escribió:
> 2012/5/19 Alfonso Egea Callejas <a.egeacallejas@gmail.com>:
>> El 19/05/12, "Matías A. Bellone" <matiasbellone@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-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact
> listmaster@lists.debian.org
> Archive:
> [🔎] CAL5yMZSZa0j2JMjZYwqnMLA4_ffB5r1F8qKH-DNUs9JMaKrUvg@mail.gmail.com">http://lists.debian.org/[🔎] CAL5yMZSZa0j2JMjZYwqnMLA4_ffB5r1F8qKH-DNUs9JMaKrUvg@mail.gmail.com
>
>

Para mi caso en concreto (obtener el primero) se adapta mejor head.

Pero en caso de necesitar mostrar el enésimo elemento sin recurrir a
hacer doble redireccionamiento son perfectas todas las opciones que
decís, destacando (para mi gusto) la de sed por quedar la línea más
"limpia".

Duda resuelta entonces. La aplicación va de maravilla :)

Muchas gracias a todos de nuevo,

Alfonso


Reply to: