【发布时间】:2013-12-12 20:12:21
【问题描述】:
我有一个包含几 TB 文件的目录。我想删除其中所有超过 14 天的文件。
我想我会使用find . -mtime +13 -delete。为了确保命令按预期工作,我运行了find . -mtime +13 -exec /bin/ls -lh '{}' \; | grep '<today>'。后者应该什么都不返回,因为find 使用-mtime +13 不应该找到今天创建/修改的文件。然而,令我惊讶的是,find 刚刚吐出了今天修改/创建的所有文件的列表!
【问题讨论】:
-
您确定您或其他人没有修改这些文件吗?!
-
查看
-daystart查找选项。您的查找正好倒数 24*13 小时,留下可能是 24*13 - 1 分钟的文件,稍后您的另一个查找会找到这些文件。 -
刚刚想通了!原因是
ls。find找到一个 mtime +13 的目录,ls简单地列出它的所有内容,无论文件有什么 mtime(facepalm!)。 -
您可以使用选项
-d代替ls仅显示目录名称而不是其所有内容。 -
始终先测试您的查找命令,将“-delete”替换为“-print”。它还可能在结果列表中包含当前目录 (.),这可能是也可能不是您想要的。