Delete all directories more than a week old

This simple linux bash script will delete subdirectories in a directory based on when the subdirectory was last modified.

In my sample script, it looks in the directory /home/backup and deletes any directories older than 7 days. Replace 7 with the number of days of your choosing!

for i in `find /home/backup/ -maxdepth 1 -type d -mtime +7 -print`; do echo -e "Deleting directory $i";rm -rf $i; done

Just to explain:

  • -maxdepth 1 = list only files/directories in 1 level from main search directory
  • -type d = list only directories
  • -mtime +7 = modified time of more than 7 days
  • -print = print out list; so we can then process the list with our bash script

This is useful for backup programs which do not clean up their old backups. Let me know if you have any questions or comments!

Dave Drager

Dave Drager


Sign in or become a free systemBash member to read and leave comments.
Just enter your email below to get an easy log in link.