find: Remove files modified more than 31 days ago

Written by Benjamin Cane on 2011-08-18 20:31:00

This is one of those things that you will run into eventually and once you know how, it is extremely useful.

Example:

# find ./ -type f -mtime +31 -exec rm {} ;

This will find all of the files older than 31 days, If you want to do files and directories you will need two commands.

# find ./ -not -type d -mtime +31 -exec rm {} ;  
# find ./ -type d -mtime +31 -exec rmdir {} ;

The only reason you run the commands twice is because when find runs rm on a non empty directory it will error. This is safer than using an rm -Rf just in case find wants to delete a directory with newer files in it.

Update

I just found the below syntax while writing this, in Unix/Linux there are many ways to skin a cat.

Example:

 [[email protected] tmp]# find ./ -mtime +31  
 ./sudoers.new  
 ./file.symlink  
 ./somedirectory  
 ./play/list.txt2  
 ./tar.tgz  
 [[email protected] tmp]# find ./ -mtime +31 -delete  
 [[email protected] tmp]# find ./ -mtime +31

Picture of Benjamin Cane

Benjamin is a Systems Architect working in the financial services industry focused on platforms that require Continuous Availability. He has been working with Linux and Unix for over 10 years now and has recently published his first book; Red Hat Enterprise Linux Troubleshooting Guide.

Publications

Identify, capture and resolve common issues faced by Red Hat Enterprise Linux administrators using best practices and advanced troubleshooting techniques

What people are saying:
Red Hat Enterprise Linux Troubleshooting Guide may just be all you need in your quest to wear the red hat. - Perry N.
Buy on Amazon

Sponsored by