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


13

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

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

Answers:


23

我不知道man find会怎么说。然后,您甚至可以显示您的努力。

find . -type f -cmin -1
find . -type f -cmin -1 -delete
  • -type f用于指定唯一的规则文件被选中。
  • -cmin -1文件的状态,在不到过去(之一)分钟最后改变。
  • -delete标志指示find删除已知Universe中的所有电子文件或类似的文件,因此在使用它时请格外小心。

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

注意-delete是非便携式扩展。

我建议您find在使用前阅读手册,因为它涵盖了可能会遇到的各种陷阱和警告。


真好!-delete比-exec rm {} \;更容易
PJ Brunet

+1以抽出时间来解释选项的选择
Jad S

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

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


3
仔细提取的存档文件可能会保留原始修改日期。最好使用创建时间。
Cem Kalyoncu 2015年

@CemKalyoncu很好。
skarface

0

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

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

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

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

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

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

哇,我的问题-我没有真正读过这个问题-您需要移动它们,而不是删除它们(请修改标题,以免引起误解)。我想您仍然可以删除它们,然后创建一个新目录,然后在其中解压缩:)。毕竟,移动=复制+删除。
阳光明媚,时间
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.