Re: Bash script question
On Thu, Dec 07, 2006 at 07:57:29PM +0100, Albert Dengg wrote:
> On Thu, Dec 07, 2006 at 12:16:54PM -0600, Nate Bargmann wrote:
> > Since there is a lot of knowledge on this list, I thought I'd aske
> > here.
> > This may be trivial, but I'm not even sure how to search for what I
> > want to do.
> > I have a directory of files that are created daily using
> > filename-`date +%Y%m%d`.tar.gz so I have a directory with files whose
> > names advance from filename-20061201.tar.gz to filename-20061202.tar.gz
> > to filename-20061203.tar.gz and so on. Based on the date in the
> > filename, I would like to delete any than are X days older than today's
> > date. So, I'm not interested in the actual created/modified date, just
> > the numeric string in the name.
> > Despite working in Bash for the past ten years or so, my shell
> > scripting skills are poor. Logically, this seems like a simple test of
> > whether the name is older than the current day - X, but I'm having
> > trouble putting this into a script.
> povided that the file was not modified since it was created (ctime
> equals creation time)
> find $DIR -ctime +$DAYS -print0|xarg -0 rm
> should probaly work.
> not tested, though...
Along these lines, you could use touch (somehow) to make the file
timestamp agree with the time value shown in the name, and then use
file test operators. Maybe touch a dummy file to the age limit you
want, and use $target-file -ot $limit-file as the test.
Ken Irving, email@example.com