Is there a shell command to find the newest created files recursively from a root directory?

link|improve this question
feedback

3 Answers

up vote 5 down vote accepted
find /mydir -type f -exec stat -c '%y %N' {} \; | sort -n
link|improve this answer
You may want to tweak "%y". Refer to "man stat". – Zimmy-DUB-Zongy-Zong-DUBBY Sep 3 '09 at 20:08
1  
In general, you should avoid using -exec for security reasons. GNU find offers -execdir as an alternative. – geocar Sep 3 '09 at 20:50
feedback

This method uses only find (and sort):

find /somedir -type f -printf "%T+ %p\n" | sort

You can constrain it to the most recent 3 days, for example, like this:

find . -type f -mtime -3 -printf "%T+ %p\n" | sort

Or the last 42.5 hours:

find . -type f -mmin -2550 -printf "%T+ %p\n" | sort

which is the same as:

find . -type f -mmin -$((42 * 60 + 30)) -printf "%T+ %p\n" | sort
link|improve this answer
feedback

To avoid forking one process per file checked, if you're on a machine with GNU versions of find and xargs, consider something like this:

find /dir -type f -print0 | xargs -0 stat -c '%Y %N' | sort -n
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

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