我想通过 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
目录中的文件具有正确的时间戳。
想法:清除文件,
find -mtime
然后(第二轮)清除空目录。很可能不可能在一轮中同时执行这两项操作,因为-empty
这也适用于文件。想法:在一轮中修复目录的时间戳(根据它们的名称),然后
find -mtime
在另一轮中清除所有目录。但是常规的 rsync 会再次破坏它。cron 作业必须针对竞争条件进行调整。想法:转换
-mtime +150
为yyyy-mm-dd
(使用date -d "-150 days"
),然后将此字符串与文件夹名称进行比较,正如@xvan 的答案中所建议的那样
我请求帮助找到最好的方法。