Command to find files for a specific time range

Solution 1:

Yes, the find command can do this. It will take some experimentation and reading and re-reading the man page to get it to do what you want, but is amazing command. Below are 2 examples:

find . -type f -ctime -2 -print0 | xargs -0 tar -rvf ~/dev_customer_attributes.tar
find . -mmin -400 > /tmp/files.txt

The 1st find uses -type f to list only files. -type d for directories. -ctime -2 is for files with a created time less than 2 days old and then adds them to the tar archive. I can't remember from when I used this command or why.

The 2nd command checks for files and directories modified within the last 400 days and outputs that list to files.txt Here's a great info page I just found, too.


Example, In my ~ on my personal laptop are files as old as 2010. And lots that are newer, too. By running find . -ctime -1000 -ctime +600, I get listing like this:

./Pictures/Photos
./Pictures/Photos/2005
./Pictures/Photos/2005/08
./Pictures/Photos/2005/08/29
./Pictures/Photos/2005/08/29/DSCN1023.JPG
./Pictures/Photos/2009
./Pictures/Photos/2009/02
./Pictures/Photos/2009/02/23
./Pictures/Photos/2009/02/23/img_0001.jpg
./Pictures/Photos/2010
./Pictures/Photos/2010/01
./Pictures/Photos/2010/01/01
./Pictures/Photos/2010/01/01/DSCN2170.JPG
./Pictures/Photos/2010/01/01/DSCN2171.JPG
./Pictures/Photos/2010/06
./Pictures/Photos/2010/06/04
./Pictures/Photos/2010/06/04/img_0111.jpg
./Pictures/Photos/2010/06/04/img_0112.jpg
./Pictures/Webcam/2010-10-03-045227.jpg
./.mission-control
./.mission-control/accounts
./.mission-control/accounts/accounts.cfg

In this case, the Pictures folder had legacy items copied over from before 2010, but which happened with the 400 day period 600 days ago.

Solution 2:

$ man find

find . -name '*.doc' -type f -mtime -28

Lists all .doc-Files below (and in) the current directory that have an 'mtime' (modify date) newer than 28 days.

Solution 3:

find is what you are looking for

find . -newermt "2012-05-01 00:00:00"

This will give you a list of files that match.
You can add the -ls flag for more information. Like this

find . -newermt "2012-05-01 00:00:00" -ls