Bagaimana cara menampilkan hanya baris terakhir dari daftar?

12

Misalkan saya membuat daftar dan mengurutkan file berdasarkan atribut temporal:

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

Apa yang harus saya tambahkan di belakang ls-ltr dalam rantai pipa untuk mendapatkan hanya baris terakhir dari daftar? Saya tahu ada sed dan canggung, tapi saya tidak tahu cara menggunakannya, saya hanya tahu apa yang bisa mereka lakukan.

Abdul Al Hazred
sumber

Jawaban:

25

Karena Anda bertanya tentang sed secara khusus,

ls -ltr | sed '$!d'
Steeldriver
sumber
terima kasih, saya sekarang sedikit bangga telah belajar sed beton.
Abdul Al Hazred
3
Juga, sed -n '$p'melakukan hal yang sama, tetapi benar tail -1-benar alat yang tepat untuk pekerjaan itu.
imiric
Terima kasih! Saya berhasil mengekstrak baris terakhir di / proc / cpuinfo dan memotong nol terdepan dengan mudah (digunakan untuk mengekstraksi nomor seri RPi3 dengan mudah):sed '$!d s/.*: 0\+//' /proc/cpuinfo
Yaron
11

Anda sedang mencari tail:

ls -ltr | tail -n 1

Ini hanya akan menampilkan baris ls -ltrkeluaran terakhir. Anda dapat mengontrol jumlah garis dengan mengubah nilainya setelah -n; jika Anda menghilangkan -n 1seluruhnya Anda akan mendapatkan sepuluh baris.

Stephen Kitt
sumber
jawaban sempurna, sangat cepat dan bermanfaat
Abdul Al Hazred
tail -1... -nberlebihan.
dhchdhd
@Barry tail -1sudah tidak digunakan lagi (lihat bagian “RATIONALE” dari spesifikasi POSIX untuktail , atau bagian terakhir dari manual GNUtails ); masih berfungsi dalam kasus ini, untuk saat ini, tetapi yang terbaik adalah menghindari menggunakannya dalam contoh.
Stephen Kitt
5

Dengan awk:

ls -ltr | awk 'END { print }'
taliezin
sumber