如何删除 linux 中 n 分钟前创建的所有文件

如何删除 linux 中 n 分钟前创建的所有文件

我想在大多数情况下,提取 tar 存档时,我们会得到一个与存档文件同名但后缀不同的目录。但在某些不幸的情况下,就像我今天遇到的那样,提取 tarball 后,我发现工作目录中散布着许多文件,这很麻烦。

所以我想向您学习的是 - 我该如何移动这些新创建的文件?我知道应该有一些“find plus rm”的花哨方法,但我不知道具体怎么做。

答案1

不知道man find会怎么说。那你就可以展示你的努力了。

find . -type f -cmin -1
find . -type f -cmin -1 -delete
  • 用于-type f指定仅选择常规文件。
  • -cmin -1文件的状态最后一次改变是在不到一分钟的时间内。
  • -delete标志告诉 find 删除已知宇宙中的所有电子文件或类似的东西,因此使用时要小心。

首先进行试运行没有-delete强烈推荐该标志。

注意这-delete是一个不可移植的扩展。

我建议find在使用它之前先阅读手册页,因为它涵盖了可能适用于您的情况的各种陷阱和警告。

答案2

find . -mtime -60s -exec mv {} /dest/dir \;

查找当前目录(和子目录)中过去 60 秒内修改过的每个文件并将其移动到 /dest/dir。

答案3

最简单的方法(如果你没有图形界面)是使用麦克. 它可以按日期对文件进行排序。

您还可以从命令行删除 tar 中的文件:

> rm $( tar -ztf mytar.tar.gz )

(-ztf) 适用于 tar.gz 文件。您可以使用 (-tf) 来处理普通 tar 文件,或使用 (-jtf) 来处理 tar.bz2 文件。

如果文件列表太大,上述命令会卡住,您可以使用 xargs:

> tar -ztf mytar.tar.gz | xargs rm

相关内容