Как я могу отсортировать вывод 'ls' по дате последнего изменения?

Ответы:

1638
ls -t

или (для обратного, самое последнее внизу):

ls -tr

Страница lsman описывает это более подробно и перечисляет другие опции.

Аднан
источник
312
ls -haltдля human readable, show hidden, print details, sort by date.
Евгений Сергеев
6
В случае, если кому-то интересно, оба аргумента -tи -rаргументы указаны в разделе о lsстандарте POSIX , поэтому должны быть совместимы между Unices.
Марк Амери
5
ls -lltдля отображения даты и времени вместе с сортировкой
Harshul Pandav
4
Да, это возможно
Ашраф.Shk786
6
@EvgeniSergeev НЕ ЗАПОМНИТЕ, ls -haltчто простой неправильный тип может привести к сбою вашего сервера! linux.die.net/man/8/halt
Исаак
148

Попробуйте это: ls -ltr. Это даст вам последние до конца списка

рана
источник
Я использовал это, чтобы получить список файлов в моем Git-репозитории по дате их последнего редактирования. ls -alt $(git ls-files -m)Спасибо!
NobleUplift
45

Для полного ответа вот что я использую: ls -lrth

Поместите это в свой скрипт запуска /etc/bashrcи назначьте псевдоним, такой как: alias l='ls -lrth'Перезагрузите терминал, и вы сможете набрать lи увидеть длинный список файлов.

Деяна
источник
14
Вы также можете позвонить, source /etc/bashrcесли хотите добавить его в свой репертуар во время работы.
cwallenpoole
1
Вы также можете добавить его ~/.bash_aliasesтолько для своего пользователя (можно создать файл, если он еще не существует
Dinei
29

Я использую иногда это:

find . -type f -mmin -5 -print0 | xargs -0 /bin/ls -tr

или же

find . -type f -mmin -5 -print0 | xargs -0 /bin/ls -ltr

рекурсивно посмотреть, какие файлы были изменены за последние 5 минут.

... или сейчас с последней версией GNU найдите :

find . -type f -mmin -5 -exec ls -ltr {} +

... и даже не для ограничения файлов :

find . -mmin -5 -exec ls -ltrd {} +

(обратите внимание на -dпереключатель, чтобы lsне отображать содержимое каталогов)

Более надежный способ?

Посмотрите на мой anser, чтобы найти и отсортировать по дате изменения

Ф. Хаури
источник
Под рекурсивным пониманием вы подразумеваете, что в нем перечислены все файлы в подкаталогах, разве у вас нет переключателя для этого?
Jiggunjer
@jiggunjer ls -Rltrбудет сортировать по dir, а затем по датам, find -type f -mmin -5 -exec ls -ltr {} +просто печатать файлы, измененные за последние 5 минут, отсортированные по дате, независимо от дерева каталогов!
Ф. Хаури
Обратите внимание, что это не сработает, если список файлов слишком длинный, чтобы передать его как один вызов оболочки ls( unix.stackexchange.com/a/118200/27186 ) - тогда вы увидите один отсортированный набор файлов, затем другой отсортированный набор файлов и т. д., но весь список не будет отсортирован. Смотрите superuser.com/questions/294161/… для сортировки длинных списков с помощью find.
молотка
@unhammer Вы правы, чтобы это работало безопасно, посмотрите мой недавний ансер для Unix / Linux, найдите и отсортируйте по дате изменения
Ф. Хаури
20

Добавлять:

alias lt='ls -Alhtr'

в $homedir/.bashrc

Layer8
источник
15

мнемонический

Ибо не игнорируйте записи, начинающиеся с .и сортируйте по дате (сначала новые):

ls -at

Для не игнорировать записи , начинающиеся с .и реверс сортировать по дате (сначала старые):

ls -art

Чтобы не игнорировать записи, начинающиеся с ., используйте длинный список форматирования и сортируйте по дате (сначала по новой):

ls -alt

Для печати удобочитаемых размеров не игнорируйте записи, начинающиеся с ., используйте длинный формат списка и сортируйте по дате (самое новое сначала) (примечание @EvgeniSergeev):

ls -halt

но будьте осторожны с последним , потому что простой неправильный тип может вызвать сбой сервера ... (@Isaac note)

simhumileco
источник
14

Найти все файлы в файловой системе, которые были изменены максимально 3 * 24 часа (3 дня) назад до сих пор:

find / -ctime 3
pbies
источник
10

Чтобы показать 10 самых последних отсортированных по дате, я использую что-то вроде этого:

ls -t ~/Downloads | head -10

или показать старейший

ls -tr ~/Downloads | tail -10
lfender6445
источник
он дает ls -t head -2и ls -tr | tail -2дает тот же результат, опция (-t / -tr) должна оставаться фиксированной и изменять хвост / голову или наоборот, модификация обоих - это все равно, что ничего не модифицировать
DDS
7

Используя только очень простые команды Unix:

ls -nl | sort -k 8,8n -k 6,6M

Это работало на Linux; столбец 8 - «n» (числовой), столбец 6 - «М», месяц.

Я новичок в этом sort, поэтому этот ответ, вероятно, может быть улучшен. Не говоря уже о том, что для этого нужны дополнительные опции lsи sortиспользуются точные метки времени, но это понадобится не всем.

bbarker
источник
5
Я подозреваю, что ваш ответ не получил никаких положительных голосов, потому что он анализирует вывод ls - посмотрите канонический аргумент против этого и этот вопрос о том, чтобы не разбирать ls
одноименный