Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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

4 Answers 4

up vote 9 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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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