ls -rt (Как вывести только последний файл? например, для: | xargs gnome-open)

16

Например, каталог, содержащий файлы JPEG: как легко открыть только самый последний JPEG в текущем каталоге?

аджо
источник

Ответы:

19

ls -rt | tail -1

Параметр -1говорит хвосту показывать только одну строку, если вы хотите быть более понятным, вместо этого вы можете использовать опцию long

ls -rt | tail --lines=1

Nifle
источник
4
Еще лучше "ls -t | head -1". Смотрите мой комментарий ниже.
Энди Лестер
20

То, что вы действительно хотите, - это первый файл из нереверсированного списка, основанного на времени.

ls -t | head -1

-R предназначен для людей, потому что мы хотим, чтобы на экране была прокручивалась последняя вещь, а не первая. В случае, если машина выяснит это, она может также использовать headи останавливаться после первого, а не tailпробежаться по списку.

Энди Лестер
источник
3

С зш:

gnome-open *.jpg(om[1])

Спецификатор glob (om)сортирует совпадения по возрасту (т.е. в антихронологическом порядке). Квалификатор glob ([1])выбирает только первое совпадение. Вы можете использовать *.jpg(om[1,4])для открытия 4 самых последних файлов и так далее.

В других оболочках:

gnome-open "$(\ls -t *.jpg | head -1)"

но имейте в виду, что если в именах ваших файлов есть непечатаемые символы или байты (что обычно происходит, если у вас есть имена файлов в другом наборе символов, отличном от вашей локали), они lsбудут заменены на ?, так что это не будет работать.

Жиль "ТАК - перестань быть злым"
источник
На Mac вы можете использовать только openвместоgnome-open
Janac Meena