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.

Antworten:


24

Da Sie speziell nach sed gefragt haben,

ls -ltr | sed '$!d'

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.


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.