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?
Super User is a question and answer site for computer enthusiasts and power users. It only takes a minute to sign up.
Sign up to join this communityThis 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
stat
was ten times faster than piping to ls
for me, although it doesn't show all the ls -l
information, obviously.
locate SomeSearchTerm -0 | xargs -0 stat -c'%Y#%y %n' | sort -n | cut -d"#" -f2 | sed "s/\.[0-9]*//"
How about:
ls -td $(locate something)
or
ls -td1 $(locate something)