Issue
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 ?
Solution
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 rmdir
instad 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 {} \;
Answered By - Tolga Varol Answer Checked By - Mary Flores (WPSolving Volunteer)