Usé este comando para mostrar el primer resultado de los archivos en mi directorio.
ls | head -n 1
Mi simple pregunta es, ¿cómo puedo modificar este comando para mostrar el enésimo resultado?
¡Gracias!
fuente
Usé este comando para mostrar el primer resultado de los archivos en mi directorio.
ls | head -n 1
Mi simple pregunta es, ¿cómo puedo modificar este comando para mostrar el enésimo resultado?
¡Gracias!
Puede usar sed para seleccionar una sola línea, por ejemplo, la línea 12:
ls | sed -n 12p
La opción -n
le pide a sed que no imprima todas las líneas (que es lo que hace normalmente), y 12p
le pide que imprima el espacio del patrón cuando la dirección es 12.
Puede haber mejores formas de hacer esto, pero esta es probablemente la más fácil: ls | head -<n> | tail -1
Directo con awk
:
$ ls / | awk 'NR==4'
etc
Tengo esto en mi .bashrc
.
lsn () {
ls ${@:2} | head -n $1 | tail -n 1
}
Esto se llama así: lsn 4
por ejemplo. El le $2
permite utilizar las
opciones de ls
modo lsn 4 -lah
que también es válido.
Nota: cuando se usa la -l
bandera, ls
hay una línea adicional en la parte superior del resultado. Lo cual sesgaría el resultado de esta función.
ls "$@"
pasarlsn
los argumentos als
. Por supuesto, después de usarshift
para sacar$1
.$@
enfoque. Bien descrito.Con
zsh
y calificadores glob:o
imprimirá el séptimo archivo de la lista de archivos ordenados por nombre.
o
imprimirá el séptimo archivo de la lista de archivos seleccionados
o
porm
tiempo (el más nuevo primero, similar a extraer la séptima entrada de lals -t
salida).Idealmente, si está procesando la
ls
salida, debe usar algo comols -q | command(s)
donde-q
imprime en?
lugar de caracteres funky (como líneas nuevas) ycommand(s)
procesa solo N líneas de salida, imprime la enésima y luego se detiene.fuente
Con cola y cabeza (añadido nl para mayor claridad). Busquemos la quinta línea:
Esto saltará a la quinta línea:
Entonces, obviamente cabeza -1
fuente