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

Hai*_*ang 19 linux find

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

所以我想向您学习的是 - 我如何移动那些新创建的文件?我知道那里应该有一些“查找加rm”奇特的方法,但我不知道具体如何。

mct*_*ylr 32

我想知道man find会说什么。然后你甚至可以展示你的努力。

find . -type f -cmin -1
find . -type f -cmin -1 -delete
Run Code Online (Sandbox Code Playgroud)
  • -type f用于指定唯一的规则文件被选中。
  • -cmin -1文件的状态,在不到过去(之一)分钟最后改变。
  • -delete标志告诉 find 删除已知宇宙中的所有电子文件或类似的东西,因此在使用它时要小心。

首先做运行测试,而不-delete被强烈推荐标志。

Note-delete是一个不可移植的扩展。

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


ska*_*ace 5

find . -mtime -60s -exec mv {} /dest/dir \;
Run Code Online (Sandbox Code Playgroud)

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

  • 小心,提取的档案文件可能会保留原始修改日期。最好使用创建时间。 (3认同)

Sun*_*nny 0

最简单的方法(假设您没有图形界面)是使用mc。它可以按日期对文件进行排序。

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

> rm $( tar -ztf mytar.tar.gz )
Run Code Online (Sandbox Code Playgroud)

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

如果文件列表太大,并且上面的命令阻塞,您可以使用 xargs:

> tar -ztf mytar.tar.gz | xargs rm
Run Code Online (Sandbox Code Playgroud)