Bash:如何删除文件夹中第 n 个最旧的文件? [复制]

Posted

技术标签:

【中文标题】Bash:如何删除文件夹中第 n 个最旧的文件? [复制]【英文标题】:Bash: how to delete the n-th oldest file in a folder? [duplicate] 【发布时间】:2016-07-04 08:03:55 【问题描述】:

我正在一组 mint/ubuntu 虚拟机上运行一个脚本,每周准确下载 23 个文件,一次详细说明一个文件,并为每个下载的文件创建一个大文件 (1..3 GB)。

下载的文件位于一个文件夹中,而详细说明的文件位于另一个文件夹中。

因为 sript 一次处理一个下载的文件,创建一个新的详细文件,所以我想在详细说明结束时自动删除两个文件夹中最旧的文件。

我的想法是按修改时间降序列出文件夹内容,并从 24 日开始删除文件。

是否可以使用 bash 来实现这一点(这样我就可以 cron 它)?

【问题讨论】:

当然,它应该看起来像ls -ltr | tail -1 您的命令显示最旧的一个,但我的目标是从第 24 个最旧的开始获取列表,因为我需要保留最近的 23 个文件,并删除所有其他文件(如果有) .请注意,可能是在特定的一周内,我的文件少于 23 个,因此脚本只删除第 24 个最旧的文件,并且仅在磁盘上至少有 23 个文件时才删除。 ***.com/a/299911/2088135 【参考方案1】:

如果您有任何内容的列表,并且希望从中删除第 24 行,则可以通过以下简单的sed 脚本对其进行管道传输:

thing_that_generates_list | sed -n '24p'

如果你想要从第 24 行到最后的所有行,请使用

thing_that_generates_list | sed -n '24,$p'

【讨论】:

我使用了ls -lt | sed -n '25,$p'。我使用25 而不是24,因为输出的第一行是以字节为单位的总大小。谢谢

以上是关于Bash:如何删除文件夹中第 n 个最旧的文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 find 命令中查找不支持 printf 的 AIX 系统上的前 N ​​个最旧文件

sh 如果有两个以上可用,则删除最旧的Linux内核和相关软件包。 #bash #linux #bash-select #kernel

如何从字典中删除最旧的元素?

java问题:怎么保存最近的N个数,新数添加的同时删除最旧的数,一直保留N个最近的数,数组可以实现吗?

git stash drop 最旧的存储(比如最旧的 5 个存储)

删除最旧的项目时防止 ListView 垂直滚动