Comment afficher uniquement la dernière ligne d'un listing?


12

Supposons que je fasse une liste et trie les fichiers par leur attribut temporel:

ls -ltr

-rwxrwxrwx 1 bla bla 4096 Feb 01 20:10 foo1
-rwxrwxrwx 1 bla bla 4096 Feb 01 20:12 foo2
.
.
.
-rwxrwxrwx 1 bla bla 4096 Mar 05 13:25 foo1000

Que dois-je ajouter derrière le ls -ltr dans une chaîne de tuyaux afin d'obtenir uniquement la dernière ligne de la liste? Je sais qu'il y a des sed et des awk, mais je ne sais pas comment les utiliser, je sais seulement ce qu'ils peuvent faire.

Réponses:


25

Puisque vous avez posé des questions sur sed en particulier,

ls -ltr | sed '$!d'

merci, je suis maintenant un peu fier d'avoir appris quelques sed concret.
— Abdul Al Hazred

3
En outre, sed -n '$p'fait la même chose, mais tail -1est vraiment le bon outil pour le travail.
— imiric

Merci! J'ai réussi à extraire la dernière ligne dans / proc / cpuinfo et à couper facilement le zéro de tête (utilisé pour extraire facilement le numéro de série RPi3):sed '$!d s/.*: 0\+//' /proc/cpuinfo
— Yaron

11

Vous recherchez tail:

ls -ltr | tail -n 1

Cela affichera uniquement la dernière ligne de ls -ltrsortie de. Vous pouvez contrôler le nombre de lignes en modifiant la valeur après -n; si vous omettez -n 1entièrement, vous obtiendrez dix lignes.


réponse parfaite, très rapide et utile
— Abdul Al Hazred

tail -1... -nest redondant.
— dhchdhd

@Barry tail -1est obsolète (voir la section «RATIONALE» de la spécification POSIX pourtail , ou la dernière partie du manuel GNUtails ); cela fonctionne toujours dans ce cas, pour l'instant, mais il vaut mieux éviter de l'utiliser dans des exemples.
— Stephen Kitt

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.