July 19, 2018

How to delete files and folders older than N days

There’s a lot of tips and recommendations about how to delete files and folders older than <N> days on the web, but you can’t as far as I know do it with only one command. And running rm -rf in the shell without any confirmation feels a bit too risky as well. Because no matter how experienced you are, accidents do happen. :)

That’s why I wrote this little script that let’s you in a safe manner verify both the age and folder before actually doing anything. I named the script deleteOldFiles.sh and it works by you first specifying the days followed by the path.

$ deleteOldFiles.sh 3 Nextcloud/tmp

These are the files and/or folders that will be deleted:

Nextcloud/tmp/2018-07-15-224841_628x482_scrot.png
Nextcloud/tmp/IMG_20180719_114053.jpg
Nextcloud/tmp/IMG_20180719_172601.jpg

Are you sure you want to continue? [y/n]

And here’s the script:

#!/bin/bash
set -e
set -u

files=$(find "$2" -mtime +"$1" -print)

printf "\nThese are the files and/or folders that will be deleted:\n\n"
printf "$files"
printf "\n\n"
read -p $'Are you sure you want to continue? [y/n] ' -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]
    then
		find "$2" -mtime +"$1" -delete
        echo -e '\nDone!'
    else
        echo -e '\nAborted!'
fi

I’m not a programmer in any way, so if you have any feedback about it (good or bad) let me know. :)

Updates

July 24, 2018

I got some feedback here and I was told that using the flag -delete with find is a better and more secure way of doing it. So I changed my script to use the -delete flag as well as adding the feature that it now prints the files and/or folders that’s going to get deleted.

July 24, 2018

I got more feedback! And even a merge request with some further improvements to my script. Thanks! :)

Comments

I'm looking into a good way of implementing comments on my blog that works without JavaScript, respects the users privacy and is reasonably user friendly. If you have any ideas or just want to give me some feedback on this blog post or if you just want to say hello, feel free to do so either via e-mail, XMPP or Mastodon.