find and delete file or folder older than x days

2019-01-19 15:32发布

问题:

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

[17:07:14 root@client01.abc.com:~]# 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 ?

回答1:

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 {} \;


回答2:

Easier to just do

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

Which will del files and dirs



回答3:

my easy way:

find /tmp/* -daystart -mtime +7 -delete

the daystart option measure times from the beginning of today rather than from 24 hours ago

ref: official_doc