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.