I've done some googling, and got it to work using this line 'rm -rf /home/YOURUSERNAME/.local/share/Trash/files/*' but this just blanket-empties the trash can without any care for retaining 7 days worth of files.
Sharon. On 3 March 2013 23:27, Sharon Kimble <skimbl...@gmail.com> wrote: > Thanks for this, and I've tried it out but its still not deleting files, > as I output it to a txt.file which still remain empty. > > There is a programme, ported from ubuntu, called 'autotrash' in the repos. > And although I've set it up as per its man page, but its output remains at > zero, and not working. > > Maybe I'm going about this from the wrong end? > > Sharon. > > > On 3 March 2013 22:43, Bob Proulx <b...@proulx.com> wrote: > >> Sharon Kimble wrote: >> > I'm trying to get a bash script working from a cron job that will empty >> > trash of all files and directories that are older than $N [7 days in >> > this case]. This partly works but is very inefficient in that it >> > doesn't delete everything that is available to be deleted, just tends >> > to leave stuff with no apparent reasoning. >> >> Very likely you are running into the problem that removing files from >> the directory causes the directory to be updated. Because the >> directory is updated it ceases to be old enough to be aged off. This >> leaves them around until they become old enough to be an age candidate >> again. >> >> Let's walk through the problem step by step. >> >> > #!/bin/bash >> >> Since there are no bash features I suggest using /bin/sh the standard >> shell. Others would say "use bash features". :-) I like standard >> better. A preference. >> >> > # emptyTrash.sh >> >> The use of a .sh on the end is frowned upon. Sure it is a shell >> script at this instant. But you actually have a bash script and so it >> should be called .bash instead of .sh. But next week you might want >> to convert it to a perl script. Two weeks after that you might want >> to convert it to a python script. Or Ruby. Encoding the language in >> the extension then gets in the way. It isn't needed. If your editor >> is a smart one, and most are these days, then it doesn't need the >> extension to know how to syntax highlight it. >> >> > for SUBDIR in files info >> > do >> > echo Lookin\' in Trash/${SUBDIR}... >> > find ${HOME}/.local/share/Trash/$SUBDIR -mtime +${DAYS} -exec rm >> -vrf {} \; done >> >> Running 'find' and 'for' is inconsistent. The 'find' command can do >> both. I would have it do both. >> >> The "\;" part is the classic old legacy way of running find's -exec. >> It runs one argument per command. That is less efficient than running >> as many arguments as possible. The new (ten years old is still new) >> way to do this and POSIX standard is using "+". Using "+" will stack >> as many arguments as possible and is very efficient. >> >> Let's start by printing the entries and then work from there. >> >> find $HOME/.local/share/Trash -mtime +$DAYS -print >> >> Files and directories. I would like to remove only the files first. >> >> find $HOME/.local/share/Trash -type f -mtime +$DAYS -print >> >> I would like find to remove them itself. The -delete option was added >> to GNU find some years ago and is available in all current GNU systems. >> >> # Warning: This fires the -delete option and will delete those files! >> find $HOME/.local/share/Trash -type f -mtime +$DAYS -delete >> >> The files are gone. Directories may be left behind. I would like to >> remove the directories as a second pass. >> >> find $HOME/.local/share/Trash -type d -print >> >> Looks good. Let's remove those too. But I am likely to avoid looking >> to see if a directory should be removed and simply try to remove it >> and deal with the non-empty errors. These are not files and were only >> created because the files were put there. No need to look at mtime on >> the trash directories. Just "rmdir" any empty directory. Using >> "rmdir" is very safe because it cannot remove files. The "rmdir" can >> only remove empty directories making it a quite safe command to simply >> fling out without looking. Can only remove directories from the >> bottom up so turn on -depth. >> >> find $HOME/.local/share/Trash -depth -type d -exec rmdir {} + >> ...may have some errors about non-empty directories... >> >> Looking better. But if a directory is not empty the GNU rmdir command >> has an option specifically for it. Let's ignore only that case. >> >> find $HOME/.local/share/Trash -depth -type d -exec rmdir >> --ignore-fail-on-non-empty {} + >> >> And there we have the components for this type of cleanup the way I >> would do them. (Others would undoubtedly prefer a different way. >> There is more than one way to do this.) And so we are left with these >> two commands run one after the other to do the full clean up. >> >> #!/bin/sh >> # emptyTrash >> DAYS=7 # retain for N days >> find $HOME/.local/share/Trash -type f -mtime +$DAYS -delete >> find $HOME/.local/share/Trash -depth -type d -exec rmdir >> --ignore-fail-on-non-empty {} + >> >> Hope that helps. >> Bob >> > > > > -- > A taste of linux = http://www.sharons.org.uk/taste/index.html > efever = http://www.efever.blogspot.com/ > efever = http://sharon04.livejournal.com/ > Debian Wheezy, LXDE 2 LibreOffice 3.5.4.2 > Registered Linux user 334501 > > > > -- A taste of linux = http://www.sharons.org.uk/taste/index.html efever = http://www.efever.blogspot.com/ efever = http://sharon04.livejournal.com/ Debian Wheezy, LXDE 2 LibreOffice 3.5.4.2 Registered Linux user 334501