比较 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