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! :)