比较bash中的日期

时间:2015-02-17 23:39:04

标签: bash scripting

我想帮助一个bash脚本读取ftp目录中的所有文件,并删除其名称上注明的日期范围之后的文件。

每个文件都有一个名称,例如'title%m%d%Y%m%d%Y'(例如:Events 02172015 02192015.png)。是否可以读取目录中的所有文件,将名称与服务器日期进行比较,并删除日期范围早于当前日期的文件?

非常感谢!

1 个答案:

答案 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