我想帮助一个bash脚本读取ftp目录中的所有文件,并删除其名称上注明的日期范围之后的文件。
每个文件都有一个名称,例如'title%m%d%Y%m%d%Y'(例如:Events 02172015 02192015.png)。是否可以读取目录中的所有文件,将名称与服务器日期进行比较,并删除日期范围早于当前日期的文件?
非常感谢!
答案 0 :(得分:1)
首先 - 更改文件名格式。使用%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