Как отобразить только последнюю строку в списке?


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это правильный инструмент для работы.
Имирик

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

11

Вы ищете tail:

ls -ltr | tail -n 1

Это отобразит только последнюю строку ls -ltrвыходных данных. Вы можете контролировать количество строк, изменяя значение после -n; если вы -n 1полностью пропустите, вы получите десять строк.


идеальный, очень быстрый и полезный ответ
Абдул Аль Хазред

tail -1... -nизбыточно.
18:00

@Barry tail -1осуждается (смотрите раздел «ПОЯСНЕНИЙ» из спецификации POSIX дляtail или последней части ГНУ tailsруководства ); на данный момент это все еще работает, но лучше избегать использования в примерах.
Стивен Китт

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.