Using Mac OS X `at` to schedule a daily task to clear out .Trash folders

Posted on


How do I use the OS X at command to schedule a daily clean-up of the user’s .Trash folder?

I’m thinking something along the lines of:

rm -rf ~/.Trash/**/* | at 0:00 + 1 day

Will this clean the trash every day?

We’ll be running this command as part of a login script, so I also need a way to clear all the scheduled tasks. Is there a way to at -r all?


rm -rf ~/Trash/* often results in permission denied errors unless you run it as root. osascript -e 'tell app "Finder" to empty trash' would also show an error dialog if some files are in use.

You could try adding 0 0 * * * rm -rf ~/Trash/* to the root’s crontab (sudo crontab -e).

Or using launchd, save a property list like this as /Library/LaunchAgents/empty_trash.plist (and make it owned by root):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN>
<plist version="1.0">
        <string>/Users/username/Trash/*</string> <!-- ~/ doesn't work -->

It’s loaded automatically on the next login, but you can load it immediately with sudo launchctl load /Library/LaunchAgents/empty_trash.plist.

Hazel also has options for emptying the trash automatically.

Leave a Reply

Your email address will not be published. Required fields are marked *