Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

find and delete file or folder older than x days

I want to delete file and folder older than 7 days so I tried

[17:07:14 [email protected]:~]# find /tmp/ -mindepth 1 -maxdepth 1 -ctime +7 -exec ls -l {} \; 

So when I run find /tmp/ -mindepth 1 -maxdepth 1 -ctime +7 -exec ls -l {} \; it doesnt show any dir, but for find /tmp/ -mindepth 1 -maxdepth 2 -ctime +7 -exec ls -l {} \; it does show few files in subdir.

Whats is the right way to delete files/folders older than 7 days in one specific dir ?

like image 488
roy Avatar asked Jul 13 '15 17:07

roy


1 Answers

You can make use of this piece of code

find /tmp/* -mtime +7 -exec rm {} \; 

Explanation

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 +7, it will find files older than 7 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.

Source : http://www.howtogeek.com/howto/ubuntu/delete-files-older-than-x-days-on-linux/

For deleting folders, after emptying inside of them you can rmdirinstad of rm in the piece of code, also if you only want to see directories you can add

-type d 

to piece of code such as below:

find /tmp/*/* -mtime +7 -type d -exec rmdir {} \; 
like image 83
Tolga Varol Avatar answered Oct 01 '22 13:10

Tolga Varol