Cron Job: Delete Files & Directories Older Than x Days or Minutes on Linux

The find utility on linux allows you to pass in a bunch of interesting arguments, including one to execute another command on each file. We’ll use this in order to figure out what files are older than a certain number of days, and then use the rm command to delete them.

find /path/to/files* -mtime +5 -exec rm {} \;


find /home/ACCOUNT-USER/public_html/test-delete/* -mtime +1 -exec rm {} \;

Note that there are spaces between rm, {}, and \;


* The first argument is the path to the files. This can be a path, a directory, or a wildcard as in the example above. I would recommend using the full path, and make sure that you run the command without the exec rm to make sure you are getting the right results.
* The second argument, -mtime, is used to specify the number of days old that the file is. If you enter +5, it will find files older than 5 days.
* The third argument, -exec, allows you to pass in a command such as rm. The {} \; at the end is required to end the command.

This should work on Ubuntu, Suse, Redhat, or pretty much any version of linux.

In order to force delete the dirs, you need to do ‘rm -fr’ instead of just ‘rm’. -f will force deletion and -r will do it recursively on all subdirs.

find can accept a -type argument where ‘find -type f’ will only find files, ‘find -type d’ will find dirs, and ‘find -type l’ will find links.

find /home/ACCOUNT-USER/public_html/test-delete/* -mmin +1 -exec rm {} \;