The linux locate command is great at finding files quicky.

My question: how can we use the locate command so that the results are returned in date/time order?


This works as long as there are not spaces in the filenames, but errors if there are too many files (see http://www.gnu.org/software/coreutils/faq/#Argument-list-too-long):

$ ls -td $(locate sh)
bash: /bin/ls: Argument list too long

This will work even with spaces or other characters in filenames, but doesn't sort correctly with too many files:

locate something -0 | xargs -0 ls -ltd

The following will always work (although it might take awhile):

locate something -0 | xargs -0 stat -c'%Y %n' | sort -n
| improve this answer | |
  • Piping to stat was ten times faster than piping to ls for me, although it doesn't show all the ls -l information, obviously. – Sparhawk Oct 6 '16 at 4:17

How about:

ls -td $(locate something)


ls -td1 $(locate something)
| improve this answer | |
  • Maybe a -d would be handy, too. – choroba Aug 27 '12 at 11:47
  • @choroba: good point, I'll update the answer. – RedGrittyBrick Aug 27 '12 at 11:49
  • 1
    This fails for files with spaces in their name. – Sparhawk Oct 6 '16 at 4:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.