Jak wyświetlić tylko ostatni wiersz wpisu?


12

Załóżmy, że robię listę i sortuję pliki według atrybutu czasowego:

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

Co powinienem dodać za ls -ltr w łańcuchu rur, aby uzyskać tylko ostatni wiersz listingu? Wiem, że są sed i awk, ale nie wiem, jak ich używać, wiem tylko, co potrafią.

Odpowiedzi:


25

Ponieważ pytałeś konkretnie o sed,

ls -ltr | sed '$!d'

dziękuję, jestem teraz trochę dumny z tego, że nauczyłem się czegoś konkretnego.
Abdul Al Hazred

3
Ponadto, sed -n '$p'robi to samo, ale tak naprawdę tail -1jest odpowiednim narzędziem do pracy.
imiric

Dzięki! Udało mi się wyodrębnić ostatnią linię w / proc / cpuinfo i z łatwością przyciąć wiodące zero (używane z łatwością do wyodrębnienia numeru seryjnego RPi3):sed '$!d s/.*: 0\+//' /proc/cpuinfo
Yaron

11

Poszukujesz tail:

ls -ltr | tail -n 1

Spowoduje to wyświetlenie tylko ostatniego wiersza ls -ltrwyniku. Możesz kontrolować liczbę wierszy, zmieniając wartość po -n; jeśli -n 1całkowicie pominiesz , dostaniesz dziesięć linii.


idealna, bardzo szybka i pomocna odpowiedź
Abdul Al Hazred

tail -1... -njest zbędny.
dhchdhd

@Barry tail -1jest przestarzały (patrz sekcja „RATIONALE” specyfikacji POSIXtail lub ostatnia część instrukcji GNUtails ); na razie działa w tym przypadku, ale najlepiej unikać go w przykładach.
Stephen Kitt,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.