For mostly, logs and other temp files, its a common use case to delete the files older than 30 or 60 days. You can achieve this using this command
find /log_or_temp_location/* -mtime +30 -exec rm {} \;
Here log_or_temp_location , is the directory where you want to do the clean up, in short path of the file. This can be a path of the file or directory or wildcard.
-mtime : This is needed to specify the number of days file/folder is old.
+30 : Here it mentions 30 days old.
-exec : This will allows you to send the command , that need to get execute : for example rm.
You need to add {} \ at the end of the statement.
The above command will not work , if you have any contents in the directory.
To force delete all the contents and the directory then
find /log_or_temp_location/* -mtime +30 -exec rm -rf {} \;
Some of other similar commands are
find /log_or_temp_location/* -daystart -mtime +30 -delete
-daystart is some thing like the calendar date. -daystart -mtime 0 gives files that are Zero Days Old,which means from today
To remove empty directories you can give as
find /log_or_temp_location/* -empty -type d -delete
You can try the below to do recursively
find /log_or_temp_location/* -type d -ctime +30 -exec rm -rf {} \;
find: Shell command for finding files and directories.
/path/to/base/dir: The path of the directory to start your search.
-type d: If you need to find only directories
-ctime +30: File or directlry modification time older than 30 days
-exec … \;: For each such result you got , do the following command in .
rm -rf {}: Recursively force t0 remove the directory.
{} : Find result gets substituted into from the previous part.