Delete files older than 500 days

5,860

You're missing that find doesn't need a list of files as input. The problem is that the glob /var/log/arc/* expands to too many files. However, find will recurse into subdirectories by default, so there's no need to use the glob at all:

find /var/log/arc/ -type f -mtime +500 -delete

-delete is a non-standard predicate. If your find implementation doesn't support it, you can use:

find /var/log/arc/ -type f -mtime +500 -exec rm -f {} +

instead.

Share:
5,860

Related videos on Youtube

Garg
Author by

Garg

n/a

Updated on September 18, 2022

Comments

  • Garg
    Garg over 1 year

    I have directory with files from 2010 year.. I want to delete all files older than 500 days and I tried this:

    find /var/log/arc/* -type f -mtime +500 -delete {}\;      
    

    But I get this:

    -bash: /usr/bin/find: Argument list too long
    

    As I know this means that there are too many files and find can't handle them. But even if I put +2000 which is 3+ years I still getting this.

    What I'm missing here?

  • Garg
    Garg almost 8 years
    Thank's but now got this: find: invalid predicate -delete'`
  • Garg
    Garg almost 8 years
    Thank you. -exec rm {} \; do the trick.
  • terdon
    terdon almost 8 years
    @hobbs I don't see why not, -exec is defined by POSIX.