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.
Related videos on Youtube
Comments
-
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?
-
Kusalananda almost 8 yearsunix.stackexchange.com/a/239268/116858 (see also comment)
-
-
Garg almost 8 yearsThank's but now got this:
find: invalid predicate
-delete'` -
Garg almost 8 yearsThank you.
-exec rm {} \;
do the trick. -
terdon almost 8 years@hobbs I don't see why not,
-exec
is defined by POSIX.