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

Tar*_*ski 4 linux command-line archiving

有时,我将存档提取到错误的文件夹中,并想移动或删除新提取的文件。

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

谢谢

Ann*_*rom 12

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

find支持一个-newer file标志,指定它应该找到比file更新的文件touch有一个 -t 参数来修改文件的访问/修改时间。因此,要修复晚上 7:25:30 左右发生的 oops:

$ tar xzf whoops.tar.gz
$ touch -t 200909261925.30 whoops-timestamp
$ find . -newer whoops-timestamp
Run Code Online (Sandbox Code Playgroud)

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

$ find . -newer whoops-timestamp -print0 | xargs -0 rm -v
Run Code Online (Sandbox Code Playgroud)

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

$ tar tfz whoops.tar.gz | xargs rm -v
Run Code Online (Sandbox Code Playgroud)