Як відобразити лише останній рядок списку?


12

Припустимо, я перелічу і сортую файли за тимчасовим атрибутом:

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

Що слід додати за ls -ltr у ланцюзі труб, щоб отримати лише останній рядок у списку? Я знаю, що є sed і awk, але я не знаю, як ними користуватися, я знаю лише, що вони можуть зробити.

Відповіді:


25

Оскільки ви спеціально запитали про sed,

ls -ltr | sed '$!d'

дякую, я зараз трохи пишаюся тим, що навчився певного конкретного седа.
Абдул Аль Хазред

3
Також sed -n '$p'робить те ж саме, але насправді tail -1це правильний інструмент для роботи.
imiric

Спасибі! Мені вдалося витягнути останній рядок у / proc / cpuinfo та легко обрізати провідний нуль (використовується для легкого вилучення серійного номера RPi3):sed '$!d s/.*: 0\+//' /proc/cpuinfo
Yaron

11

Ви шукаєте tail:

ls -ltr | tail -n 1

Тут буде відображатися лише останній рядок ls -ltrвиводу. Ви можете керувати кількістю рядків, змінюючи значення після -n; якщо -n 1повністю пропустити, ви отримаєте десять рядків.


ідеальна, дуже швидка та корисна відповідь
Абдул Аль Хазред

tail -1... -nє зайвим.
dhchdhd

@Barry tail -1застарілий (див. Розділ "RATIONALE" специфікації POSIX дляtail останньої частини посібника GNUtails ); У цьому випадку він все ще працює, але краще уникати використання його в прикладах.
Стівен Кітт

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.