如何删除在特定日期之间修改的文件?

Pat*_*ryk 12 command-line rm timestamp

如主题:我想删除在特定日期范围内修改过的目录中的文件。我怎样才能做到这一点 ?

enz*_*tib 18

命令GNU find是要走的路。例如,要删除8月1日到5日之间当前目录下的所有文件,可以使用以下命令

find . -maxdepth 1 -type f -newermt 2011-08-01 ! -newermt 2011-08-06 -delete
Run Code Online (Sandbox Code Playgroud)

最好在没有-delete操作的情况下执行命令,首先,查看感兴趣的文件列表(一个很好的替代方法可能是-ls生成类似 ls 的列表)。

删除-maxdepth 1规范也将遍历所有子目录。

您还可以指定小时数,例如

find . -maxdepth 1 -type f -newermt '2011-08-01 10:01:59' \
                         ! -newermt '2011-08-06 23:01:00' -delete
Run Code Online (Sandbox Code Playgroud)

请注意不要删除单引号,以保护日期和时间之间的空格。

字符!是一个否定,应阅读:新的这个日期,但不是新的,这个其他日期。

  • +1。我不知道 -delete 谓词。也许不需要,但我会添加`-type f`。 (3认同)