当日期编码为 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
目录中的文件具有 正确的 时间戳。
idea:使用 find -mtime
清除文件,然后(第二轮)清除空目录。很可能不可能在一轮中同时执行这两项操作,因为 -empty
也适用于文件。
idea:在一轮中修复目录的时间戳(根据它们的名称),然后在另一轮中通过find -mtime
清除所有目录。但是常规的 rsync 会再次破坏它。必须根据竞争条件调整 cron 作业。
想法:将-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
我想通过 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
目录中的文件具有 正确的 时间戳。
idea:使用
find -mtime
清除文件,然后(第二轮)清除空目录。很可能不可能在一轮中同时执行这两项操作,因为-empty
也适用于文件。idea:在一轮中修复目录的时间戳(根据它们的名称),然后在另一轮中通过
find -mtime
清除所有目录。但是常规的 rsync 会再次破坏它。必须根据竞争条件调整 cron 作业。想法:将
-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