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


# 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.


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


 [[email protected] tmp]# find ./ -mtime +31  
 [[email protected] tmp]# find ./ -mtime +31 -delete  
 [[email protected] tmp]# find ./ -mtime +31