Sign up ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

How can I sort the output of ls by last modified date?

share|improve this question

migrated from May 30 '10 at 19:58

This question came from our site for professional and enthusiast programmers.

7 Answers 7

ls -t

or (for reverse, most recent at bottom):

ls -tr

The ls man page describes this in more details, and lists other options.

share|improve this answer
ls -halt is for human readable, show hidden, print details, sort by date. – Evgeni Sergeev Oct 1 '13 at 5:24
In case anyone's wondering, both the -t and -r arguments are specified in the section about ls in the POSIX standard, so should be compatible across Unices. – Mark Amery Oct 27 at 12:09

Try this: ls -ltr. It will give you the recent to the end of the list

share|improve this answer

For a complete answer here is what I use: ls -lrth

Put this in your startup script /etc/bashrc and assign an alias like this: alias l='ls -lrth' Restart your terminal and you should be able to type l and see a long list of files.

share|improve this answer
You can also call source /etc/bashrc if you want to add it to your repertoire while running. – cwallenpoole Feb 11 at 7:57

I use sometime this:

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


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

to look recursively about which files was modified in last 5 minutes.

... or now, with recent version of GNU find:

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

... and even for not limiting to files:

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

(note the -d switch to ls for not displaying content of directories)

share|improve this answer
By recursively you mean it lists all files in subdirectories, doesn't ls already have a switch to do that? – jiggunjer May 14 at 16:28
@jiggunjer: yes, but find is quicker and I find his output more readable. – F. Hauri May 14 at 18:00


alias lt='ls -Alhtr'

in $homedir/.bashrc

share|improve this answer

Find all files on filesystem that were modified maximally 3 * 24 hours (3 days) ago till now:

find / -ctime 3
share|improve this answer
Tis gonna take ages to complete tho. – yo' Oct 19 '14 at 16:12
@tohecz Be my guest. – pbies Oct 20 '14 at 17:23

Using only very basic unix commands:

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

This worked on Linux; column 8 is "n" (numeric), column 6 is "M", month.

I'm new at sort, so this answer could probably be improved. Not to mention, it needs additional options to ls and sort to use exact timestamps, but not everyone will need this.

share|improve this answer
I suspect your answer hasn't gotten any up-votes because it parses the output of ls - see the canonical argument against doing so and this question about not parsing ls – Eponymous Dec 15 '14 at 22:32

protected by Nifle Aug 16 '12 at 18:15

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?