当日期编码为 dirname 为 yyyy-mm-dd 时如何查找早于日期的目录

How to find directories older than date when the date is encoded to dirname as yyyy-mm-dd

我想通过 GNU find 清除包含所有内容的旧文件夹。我熟悉 -mtime 但目录的时间戳通常被 rsync 损坏 - 不重要。幸运的是,时间戳被编码为目录名称 yyyy-mm-dd.

我怎样才能使用目录名而不是时间戳来做同样的事情?最佳读取方案优先。

编辑: 损坏的时间戳:

drwxr-xr-x 2 user user 8192 Aug 23 11:12 2016-05-03
drwxr-xr-x 2 user user 8192 Aug 23 11:12 2016-05-04
drwxr-xr-x 2 user user 8192 Aug 23 11:12 2016-05-05

目录中的文件具有 正确的 时间戳。

  1. idea:使用 find -mtime 清除文件,然后(第二轮)清除空目录。很可能不可能在一轮中同时执行这两项操作,因为 -empty 也适用于文件。

  2. idea:在一轮中修复目录的时间戳(根据它们的名称),然后在另一轮中通过find -mtime清除所有目录。但是常规的 rsync 会再次破坏它。必须根据竞争条件调整 cron 作业。

  3. 想法:将-mtime +150转换为yyyy-mm-dd(使用date -d "-150 days"),然后将此字符串与文件夹名称进行比较,正如答案中所建议的那样@xvan

我寻求帮助寻找最佳方法。

您可以使用bash字典序比较:

if [[ "2010-01-01" < "2011-02-02" ]]
  then echo "yes"
fi

编辑:逃脱有点困难<,这对我有用。

find . ! -path . -type d -exec bash -c "[[ {} < 2010-02-02 ]]"  \; -print