Sometimes I need to calculate a total disk usage of files older than a specified interval (days, months, years).


Here is a 1 liner to do that:

find . -type f -mtime +7 -print0 | du -hc --files0-from - | tail -n 1


Detailed info ?

Use find to search for files (-type f) modified more than 7 days (-mtime +7). Print the full file name on the standard output, followed by a null character (instead of the newline character that -print uses).
Pass files list to du to get a total disk usage (-h), in human readable format (-h), of the NUL-terminated file names specified from standard input (--files0-from -).
Finally, show only the last line, Total from du output (tail -n 1).


Other examples

  • Find disk usage of files older than 1 year:
find . -type f -mtime +365 -print0 | du -hc --files0-from - | tail -n 1
  • Find and !!! DELETE !!! files older than 1 year:
find . -type f -mtime +365 -print -delete


Have fun :)