如何在 Linux 上删除大于某个日期的文件

如何在 Linux 上删除大于某个日期的文件

有时我会将档案解压到错误的文件夹中,然后想移动或删除新解压的文件。

通过命令行执行此操作的最简单方法是什么?我可以以某种方式搜索比提取时间更新的所有文件并将其导入 rm 吗?

谢谢

答案1

编辑:正如评论中所述,tar修改提取文件的 mtime 和 ctime 以匹配存档中的日期,因此除非在提取过程中使用了标志,否则第一种方法将不起作用-m。最后一种方法是最佳的,但如果文件名冲突,可能会导致删除您想要的文件。

find支持-newer file标志,指定它应该查找比文件.touch有一个 -t 参数,用于修改文件的访问/修改时间。因此,要修复下午 7:25:30 左右发生的错误:

$ tar xzf whoops.tar.gz
$ touch -t 200909261925.30 whoops-timestamp
$ find . -newer whoops-timestamp

如果您确信显示的是正确的文件:

$ find . -newer whoops-timestamp -print0 | xargs -0 rm -v

另一种方法是删除刚刚提取的档案中列出的所有文件:

$ tar tfz whoops.tar.gz | xargs rm -v

答案2

另一种方法是使用 find:

$ find "/path/to_clean/" -type f -mtime +30 -print0 | xargs -0 rm -f

其中 +30 是您希望保留的天数。

相关内容