Operating System - HP-UX
1753907 Members
8531 Online
108810 Solutions
New Discussion юеВ

Re: crontab entry to delete old files/folders error

 
Keith Zuidema_1
Advisor

crontab entry to delete old files/folders error

I am trying to automate the delete of a backup directory that is 14 days old
this is the crontab entry I am trying.

find /backup_to_disk/some_dir/ -depth -mtime +14 -exec sh -c 'test -d "$1" && rmdir "$1" || rm "$1"' {} {} \;

This is the error I am receiving
rmdir: /backup_to_disk/some_dir/11042010/prod/bakdir: Directory not empty
rm: /backup_to_disk/some_dir/11042010/prod/bakdir directory

Any ideas?
3 REPLIES 3
Steven Schweda
Honored Contributor

Re: crontab entry to delete old files/folders error

> Any ideas?

Plain "rm" won't delete a directory. "rmdir"
won't delete a non-empty directory.

man rmdir

man rm

Look for "-r"?

> [...] test -d [...]

man find

Look for "-type"?
James R. Ferguson
Acclaimed Contributor

Re: crontab entry to delete old files/folders error

Hi:

The case of the error on a non-empty directory (from 'rmdir') is the result of 'find' having found a directory that meets the criteria but yet none of its contents (files) satisfy the criteria.

It might be better to use a two-step process where you first remove *files* ('-type f') and then, in a second pass attempt to remove directories ('-type d') ignoring non-empty errors.

Regards!

...JRF...

Dennis Handly
Acclaimed Contributor

Re: crontab entry to delete old files/folders error

>JRF: in a second pass attempt to remove directories ('-type d') ignoring non-empty errors.

Right, the first pass may cause the directory to be modified and 14 more days must go by before you finally remove that. But that shouldn't take up too much space.

Or if you assume only new files are added, the directory is always modified at the same date so you can just use rm -rf.