Nate Bargmann wrote:
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.
Here's a function, with an example invocation, that I'm pretty sure does
what you want, assuming the file filename-20061203.tar.gz exists:
#!/bin/bash
# give $1=filename $2=days_old
function remove_if_too_old
{
TODAY=`date +%Y%m%d`
if [[ `echo "$1" | cut -f 2 -d "-" | cut -f 1 -d "."` < `expr $TODAY
- $2` ]]
then
rm $1
fi
}
remove_if_too_old filename-20061203.tar.gz 2
--Ben
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]