Wie kann nur die letzte Zeile eines Eintrags angezeigt werden?

11

Angenommen, ich mache eine Auflistung und sortiere die Dateien nach ihrem zeitlichen Attribut:

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

Was muss ich hinter dem ls -ltr in einer Rohrkette hinzufügen, um nur die letzte Zeile der Auflistung zu erhalten? Ich weiß, dass es sed und awk gibt, aber ich weiß nicht, wie ich sie verwenden soll, ich weiß nur, was sie können.

Abdul Al Hazred
quelle

Antworten:

24

Da Sie speziell nach sed gefragt haben,

ls -ltr | sed '$!d'
Steeldriver
quelle
danke, ich bin jetzt ein wenig stolz darauf, etwas konkretes sed gelernt zu haben.
Abdul Al Hazred
3
Auch sed -n '$p'macht das gleiche, ist aber wirklich tail -1das richtige Werkzeug für den Job.
Imiric
Vielen Dank! Ich habe es geschafft, die letzte Zeile in / proc / cpuinfo zu extrahieren und die führende Null mühelos zu kürzen (wird zum einfachen Extrahieren der RPi3-Seriennummer verwendet):sed '$!d s/.*: 0\+//' /proc/cpuinfo
Yaron
11

Sie suchen tail:

ls -ltr | tail -n 1

Dies zeigt nur die letzte Zeile der ls -ltrAusgabe an. Sie können die Anzahl der Zeilen steuern, indem Sie den Wert nach ändern -n. Wenn Sie -n 1ganz weglassen, erhalten Sie zehn Zeilen.

Stephen Kitt
quelle
perfekte, sehr schnelle und hilfreiche Antwort
Abdul Al Hazred
tail -1... -nist überflüssig.
Dhchdhd
@Barry tail -1ist veraltet (siehe Abschnitt „RATIONALE“ der POSIX-Spezifikation fürtail oder den letzten Teil des GNU- tailsHandbuchs ); In diesem Fall funktioniert es vorerst immer noch, aber es ist am besten, es nicht in Beispielen zu verwenden.
Stephen Kitt
5

Mit awk:

ls -ltr | awk 'END { print }'
Taliezin
quelle