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.

Abdul Al Hazred
la source

Réponses:

25

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

ls -ltr | sed '$!d'
tournevis
la source
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.

Stephen Kitt
la source
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
5

Avec awk:

ls -ltr | awk 'END { print }'
taliezin
la source