Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have few Linux RedHat machines and i must find some files on them. The problem is that they have a lot of files and folders since 2004 year. And i don't know where exactly to look for this files.

Is there some terminal command with witch i can select specific time range. I want to see every file witch is changed from last month(May) to now.

share|improve this question
up vote 11 down vote accepted

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.

share|improve this answer
    
But i don't know in witch folder and what file exactly i looking for. I mean that's why i need to see witch file were modified last 30 days in whole system. – Jason Paddle Jun 28 '12 at 6:57
    
Yes, so move to /, omit the -type look for -ctime of - 8 years of days and another -ctime of something like + 4 years in days. This will list all folders and files which meet the time criteria. Editing answer to show example... – Chris K Jun 28 '12 at 6:59
    
this work I just need to write correct time range – Jason Paddle Jun 28 '12 at 7:23
1  
Might want to use -print0 with find and xargs -0 in order to be safe. – slhck Jun 28 '12 at 9:15
1  
It should be mtime instead of ctime if you want find files which CONTENT was changed. At this point ctime is changed, too - but not only than, so this could result in a missleading list. See this wonderful explanation about ctime, mtime and atime: linux-faqs.info/general/… – Jimmy Koerting Dec 30 '13 at 12:34

I think you will need the -mtime parameter of the find command. See if this is any help: http://www.cyberciti.biz/faq/howto-finding-files-by-date/

share|improve this answer

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

share|improve this answer
    
find: invalid predicate `-newermt' this i get – Jason Paddle Jun 28 '12 at 6:47
    
well I'm connected right now with putty to server – Jason Paddle Jun 28 '12 at 6:58
    
@JasonPaddle - If you can't get the -newermtflag to work I suggest you use -mtime -28 instead (as suggested elsewhere). It will give the same result but require you to do the maths (so if you run it tomorrow it will be -mtime -29 and so on). – Nifle Jun 28 '12 at 7:01
    
with -mtime i get only one result. One file from today witch is modified 1 hour ago: find . -mtime -28 -ls – Jason Paddle Jun 28 '12 at 7:13
1  
@JasonPaddle - Glad you sorted it out. – Nifle Jun 28 '12 at 7:26
$ 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.

share|improve this answer
    
I believe -28 means newer than 28 days. – Chris K Jun 28 '12 at 7:35
1  
You're correct. I fixed this. Just switched the words. – ppuschmann Jun 28 '12 at 7:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .