比较 bash 中的 ddmmyy 日期
Comparing ddmmyy dates in bash
我需要一些帮助 bash 脚本来读取 ftp 目录中的所有文件并删除其名称中规定的日期范围之后的文件。
每个文件都有一个名称,例如 'title %m%d%Y %m%d%Y'(例如:事件 02172015 02192015.png)。是否可以读取目录中的所有文件,将名称与服务器日期进行比较,并删除日期范围早于当前日期的文件?
首先 -- 更改您的文件名格式。使用 %Y%m%d
将大大减少所涉及的痛苦和痛苦(并且,作为副作用,将使按文件名排序的工具自动按日期排序文件)。
按照最初的要求回答您的问题,但是...
today=$(date +%Y%m%d)
# filter for filenames with at least two spaces and a period
for f in *" "*" "*.*; do
without_extension=${f%.*}
end_date=${without_extension##* }
## now, if you were using YYYYMMDD, you could just do this:
# [[ $end_date < $today ]] && rm -f -- "$f"
## ...however, since you aren't, you need all this mess:
mon=${end_date:0:2}
day=${end_date:2:2}
year=${end_date:4:4}
end_date_sane=${year}${mon}${day}
[[ $end_date_sane < $today ]] && rm -f -- "$f"
done
我需要一些帮助 bash 脚本来读取 ftp 目录中的所有文件并删除其名称中规定的日期范围之后的文件。
每个文件都有一个名称,例如 'title %m%d%Y %m%d%Y'(例如:事件 02172015 02192015.png)。是否可以读取目录中的所有文件,将名称与服务器日期进行比较,并删除日期范围早于当前日期的文件?
首先 -- 更改您的文件名格式。使用 %Y%m%d
将大大减少所涉及的痛苦和痛苦(并且,作为副作用,将使按文件名排序的工具自动按日期排序文件)。
按照最初的要求回答您的问题,但是...
today=$(date +%Y%m%d)
# filter for filenames with at least two spaces and a period
for f in *" "*" "*.*; do
without_extension=${f%.*}
end_date=${without_extension##* }
## now, if you were using YYYYMMDD, you could just do this:
# [[ $end_date < $today ]] && rm -f -- "$f"
## ...however, since you aren't, you need all this mess:
mon=${end_date:0:2}
day=${end_date:2:2}
year=${end_date:4:4}
end_date_sane=${year}${mon}${day}
[[ $end_date_sane < $today ]] && rm -f -- "$f"
done