J'ai utilisé cette commande pour afficher le premier résultat des fichiers dans mon répertoire.
ls | head -n 1
Ma question simple est, comment puis-je modifier cette commande pour afficher le résultat nième?
Merci!
la source
J'ai utilisé cette commande pour afficher le premier résultat des fichiers dans mon répertoire.
ls | head -n 1
Ma question simple est, comment puis-je modifier cette commande pour afficher le résultat nième?
Merci!
Vous pouvez utiliser sed pour sélectionner une seule ligne, par exemple la ligne 12:
ls | sed -n 12p
L'option -n
demande à sed de ne pas imprimer chaque ligne (ce qui est normalement le cas) et 12p
demande d'imprimer l'espace de motif lorsque l'adresse est 12.
Il peut y avoir de meilleures façons de le faire, mais c'est probablement le plus simple: ls | head -<n> | tail -1
Simple avec awk
:
$ ls / | awk 'NR==4'
etc
J'ai ceci dans mon .bashrc
.
lsn () {
ls ${@:2} | head -n $1 | tail -n 1
}
Cela s'appelle comme tel: lsn 4
par exemple. Le $2
vous permet d'utiliser des
options sur ls
donc lsn 4 -lah
est également valide.
Remarque: lorsque vous utilisez le -l
drapeau, ls
il y a une ligne supplémentaire en haut du résultat. Ce qui fausserait le résultat de cette fonction.
ls "$@"
passerlsn
les arguments dels
. Bien sûr, après avoir utiliséshift
pour sortir$1
.$@
approche. Bien repéré.Avec
zsh
et qualificatifs glob:ou
imprimera le 7e fichier à partir de la liste des fichiers triés par nom.
ou
imprimera le 7e fichier à partir de la liste des fichiers
o
classés parm
heure (le plus récent en premier - similaire à l'extraction de la 7e entrée de lals -t
sortie).Idéalement, si vous traitez la
ls
sortie, vous devriez utiliser quelque chose commels -q | command(s)
where-q
imprime?
au lieu de caractères géniaux (comme les sauts de ligne) etcommand(s)
ne traite que N lignes de sortie, imprime le Nth puis s'arrête.la source
Avec queue et tête (ajouté nl pour plus de clarté). Allons chercher la cinquième ligne:
Cela passera à la cinquième ligne:
Ensuite, évidemment, dirigez -1
la source