How list file by range of date?

I would like to list files with 3 days years old. I found this one at stackoverflow:

find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' ' | grep 2012 

But I kind don't understand what the whole command means. I wonder if there is something short and simple to understand.

2 Answers

This should work

find . -type f -mtime -3 

Explanation

find find files . starting in the current directory (and it's subdirectories) -type f which are plain files (not directories, or devices etc) -mtime -3 modified less than 3 days ago 

See man find for details


Update

To find files last modified before a specific date and time (e.g. 08:15 on 20th February 2013) you can do something like

 touch -t 201302200815 freds_accident find . -type f ! -newer freds_accident rm freds_accident 

See man touch (or info touch - ugh!)

This is moderately horrible and there may be a better way. The above approach works on ancient and non-GNU Unix as well as current Linux.

3

Find supports intervals with -ctime and -mtime +/- arguments.

e.g.

$ for y in {07..14};do \ for m in {01..12};do \ for d in {01..30};do \ touch -t 20$y$m${d}0101 $y$m$d.file ;done;done;done $ find . -mtime +0 -mtime -$(( 3 * 365 + 3 )) |sort ./100304.file ./100305.file ./100306.file (...) ./130302.file ./130303.file ./130304.file 

If you wanted files created a in the interval between 3 years and 3 days ago upto a week ago you would use -mtime +7 -mtime -1098.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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

You Might Also Like