如何删除超过 (n) 天的文件,但保留 (n) 个文件,无论其年龄如何?

2024-01-11

我用 PHP 编写了以下内容,但我想知道是否有一种优雅的方法可以在 Linux shell 脚本中执行此操作?基本上删除超过 (n) 天的文件,但保留 (n) 最新的文件,无论其年龄如何。

    PHP

    foreach (glob("backup/*.db") as $file) {
        $a[$file]=date("Y-m-d",filemtime($file));
    }
    $i=0;
    arsort($a);
    foreach($a as $file=>$date) {
        if ($i++>=10) {
            if ($date<=date("Y-m-d",strtotime("-10 days"))) {
                unlink($file);
                xmessage("PURGED: $file");
            }   
        }   
    }   

我的想法是用“find -mtime +(n) exec rm”删除,但只通过管道传输不在“head -n +(n)”中的文件?但“head -n”似乎并没有达到我的预期。谢谢。

SHELL SCRIPT

find -mtime +10 | ls -t *.DB.tar.gz | head -n -10

使用所有 GNU find、sort、awk 和 xargs 尝试此操作:

find . -type f -printf '%Ts %p\0' |
sort -k1,1nr -sz |
awk -v days=10 -v cnt=10 '
    BEGIN { RS=ORS="\0"; secs=systime()-(days*24*60*60) }
    (NR>cnt) && ($1>secs) { print gensub(/\S+\s+/,"",1) }
' |
xargs -0 ls --

Change ls to rm当您完成测试并确保它为您提供预期的输出时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何删除超过 (n) 天的文件,但保留 (n) 个文件,无论其年龄如何? 的相关文章

  • 如何拆分一行并重新排列其元素?

    我在一行中有一些数据 如下所示 abc edf xyz rfg yeg udh 我想呈现如下数据 abc xyz yeg edf rfg udh 以便打印备用字段并用换行符分隔 有没有这样的衬里 下列awk脚本可以做到这一点 gt echo
  • 子 shell 何时继承其父 shell 环境?

    什么情况下将shell的环境传递给子shell 子 shell 始终从父 shell 获取所有变量 man bash将描述所有使用子shell的情况 主要是 command command command and command 所谓环境只
  • ARM 系统调用的接口是什么?它在 Linux 内核中的何处定义?

    我读过有关 Linux 中的系统调用的内容 并且到处都给出了有关 x86 架构的描述 0x80中断和SYSENTER 但我无法追踪 ARM 架构中系统调用的文件和进程 任何人都可以帮忙吗 我知道的几个相关文件是 arch arm kerne
  • 在 Ubuntu 上纯粹通过 bash 脚本安装 mysql 5.7

    我想要一个无需任何手动输入即可安装 MySQL 5 7 实例的 bash 脚本 我正在关注数字海洋教程 https www digitalocean com community tutorials how to install mysql
  • gnome-terminal 新选项卡,使用别名作为要执行的命令

    我已经创建了一个别名 bashrc文件如下 alias myproject cd Desktop myproject 当我重新启动终端时保存文件后 输入myproject带我到项目目录 但是当我尝试使用别名作为新的命令参数时gnome te
  • 如何阅读shell命令的源代码?

    我想阅读编写linux命令的实际源代码 我已经获得了一些使用它们的经验 现在我认为是时候与我的机器进行更深层次的交互了 我在这里找到了一些命令http directory fsf org wiki GNU http directory fs
  • UDP 广播发送失败:在 Linux 2.6.30 上“网络无法访问”

    我用udp广播写了一个程序 代码段如下 struct sockaddr in broadcast addr socklen t sock len sizeof broadcast addr bzero broadcast addr sock
  • 如何使用ffmpeg重叠和合并多个音频文件?

    我正在尝试将多个音频文件合并到一个文件中 但我可以使用以下命令来连接 而不是连接 ffmpeg v debug i file1 wav i file2 wav i file3 wav filter complex 0 0 concat n
  • 远程linux服务器到远程linux服务器大型稀疏文件复制 - 如何?

    我有两台 CentOS 5 4 服务器 每台服务器上都安装了 VMware Server 假设我始终对 vmware 虚拟机使用稀疏文件 将虚拟机文件从一台服务器复制到另一台服务器的最可靠 最快速的方法是什么 虚拟机的文件复制起来很痛苦 因
  • Linux 文本文件操作

    我有一个格式的文件 a href a href a href a href 我需要选择 之后但 之前的文本 并将其打印在行尾 添加后 例如 a href http www wowhead com search Su a a a a a
  • 如何复制每个扩展名为 X 的文件,同时保留原始文件夹结构? (类Unix系统)

    我正在尝试将每个 HTML 文件从 src 文件夹复制到 dist 文件夹 但是 我想保留原始文件夹结构 如果 dist 文件夹不存在 我想创建一个新文件夹 如果文件夹不存在则创建 d dist mkdir dist 复制每个文件 cp R
  • 为什么 ld 无法从 /etc/ld.so.conf 中的路径找到库?

    我想添加 opt vertica lib64进入系统库路径 所以我执行以下步骤 1 添加 opt vertica lib64 into etc ld so conf 然后运行ldconfig 2 检查 bash ldconfig p gre
  • Linux命令列出所有可用命令和别名

    是否有一个 Linux 命令可以列出该终端会话的所有可用命令和别名 就好像您输入 a 并按下 Tab 键一样 但针对的是字母表中的每个字母 或者运行 别名 但也返回命令 为什么 我想运行以下命令并查看命令是否可用 ListAllComman
  • 无关的库链接

    我有一个可能有点愚蠢的问题 因为我很确定我可能已经知道答案了 假设你有静态库A 动态共享库B和你的linux下的程序C 假设库 A 调用库 B 中的函数 并且您的程序调用库 A 中的函数 现在假设 C 在 A 中调用的所有函数都不使用 B
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 如何从类似于 eclipse 的命令行创建可运行的 jar 文件

    我知道 eclipse 会生成一个可运行的 jar 文件 其中提取并包含在该 jar 文件中的所有库 jar 文件 从命令提示符手动创建 jar 文件时如何执行类似的操作 我需要将所有 lib jar 解压到类文件夹中吗 目前我正在使用 j
  • 如何在 Linux 主机上的 docker 容器中挂载目录 [重复]

    这个问题在这里已经有答案了 我想将一个目录从 docker 容器挂载到本地文件系统 该目录是网站根目录 我需要能够使用任何编辑器在本地计算机上编辑它 我知道我可以跑docker run v local path container path
  • “grep -q”的意义是什么

    我正在阅读 grep 手册页 并遇到了 q 选项 它告诉 grep 不向标准输出写入任何内容 如果发现任何匹配 即使检测到错误 也立即以零状态退出 我不明白为什么这可能是理想或有用的行为 在一个程序中 其原因似乎是从标准输入读取 处理 写入
  • Linux 上的 Python 3.6 tkinter 窗口图标错误

    我正在从 Python GUI 编程手册 学习 Python GUI 某项任务要求我通过将以下代码添加到我的配方中来更改窗口图标 Change the main windows icon win iconbitmap r C Python3
  • touch命令在一个目录下创建多个文件(不同名称)

    我想制作一个在 bash 中创建目录和文件结构的脚本 我尝试过这样的事情 mkdir p 1 2 touch 1 2 a b c a b c 应该是在一个命令或其他命令中创建的文件 但由于某种原因 结构是这样的 current folder

随机推荐

  • 如何将候选用户列表传递给 alfresco 中的 activiti 工作流任务?

    我希望能够传递作为任务候选者的用户列表 用户是从数据列表中检索的 不能作为一个组使用 Activiti candidateUsers 似乎是正确的方法 假设已获取用户并将其设置在变量 ipw reviwers 中
  • JBoss AS7 *.dodeploy 文件

    我们将应用程序打包为 war 文件 宣传对 JBoss AS5 的支持 并指示客户将 war 复制到他们的 JBoss 部署 目录中 并启动他们的应用程序服务器以部署 war 我们正在引入对 JBoss AS7 的支持 因此我们对 AS7
  • 无法正确编写签名助手应用程序代码

    我正在尝试对我的帮助应用程序进行代码签名 我已经为其创建了一个单独的配置文件 它是有效且有效的 我可以将其存档并导出以供 Mac App Store 提交 但是 当我运行主应用程序并将帮助程序添加为守护程序时 帮助程序应用程序开始运行 但它
  • GitHub 默认 README 标记

    这是一个与 GitHub 功能相关的非常简单的问题 该功能可以获取 README 文件并将其显示在任何存储库上 我知道它使用这个存储库可以做到这一点 https github com github markup 但想知道是否在没有任何扩展的
  • 垃圾收集器如何识别根

    标记 清除垃圾收集器的第一阶段是标记 查找 堆上的所有活动对象 为此 必须有一个起点或根 所有标记都从那里开始 GC如何识别这样的根 假设一组不同的对象是可访问的 这些对象被称为根 通常 这些对象包括从调用堆栈中任何位置引用的所有对象 即当
  • 通过 VPN 连接的 iPhone 远程调试

    当我的 iPhone 使用本地 WiFi 时 Xcode 会通过网络看到我的 iPhone 我的 Mac Pro 开发计算机正在运行带有 VPN 服务器的 macOS Server 当我从 iPhone 通过 VPN 连接到 Mac Pro
  • Qt:在构造函数内部连接 ​​- 在初始化对象之前会调用槽吗?

    我正在学习 Qt 框架 C 想知道 QT 是否有任何机制来保护插槽在对象完全初始化之前不被调用 考虑 A 类构造函数 A A mTreeView new QTreeView connect mTreeView QTreeView custo
  • 删除html表格中的外边框

    我正在开发 HTML 格式的报告 我那里有一张桌子 在每个 TD 中我都有另一个表 我想将 td 中的每个表分开 所以我启用了主表的边框 但内部表格很少需要显示单元格边框 但我不希望显示该特定内部表格的外边框 Ex table tr td
  • 是否可以使 VSO(Visual Studio Online)存储库公开可见?

    我喜欢 VSO Visual Studio Online 功能及其能力 但我希望其他用户 匿名 能够查看我的某个项目的存储库 我试图在项目设置中使用安全性内容 但无法弄清楚如何设置对我的存储库的公共访问 有可能吗 目前 没有 VSTS 目前
  • 当应用程序处于后台且具有数据负载时,如何处理 Android FCM 消息? [复制]

    这个问题在这里已经有答案了 当应用程序处于后台时 使用 FCM 的 Android 推送通知无法处理 默认消息显示在通知托盘中 任何人都可以帮助我如何在后台应用程序时处理消息 Override public void onMessageRe
  • 在 Swift 中,如何扩展类型别名?

    我有一个类型别名 typealias BeaconId String NSObject 我想通过做类似的事情来扩展它 extension BeaconId 但这会引发编译错误 必须在非专用泛型类型 Dictionary 上声明约束扩展 并使
  • RangeError(索引):无效值:唯一有效值为0:1

    我是颤振的新手 我正在尝试将数据列表添加到视图中 数据列表具有不同长度的不同订单项集合 我正在从 API 获取数据 但由于订单数据的长度不同 我收到如下图所示的错误 我的 json api 如下 status success message
  • 检测 AppWidget 上的 OnTouch。如果可以的话?

    检测 AppWidget 上的 OnTouch 如果可以的话 你好 我正在尝试为 Android 2 1 创建我的第一个 AppWidget 其中客户端可能有机会在我的自定义视图上选择一个项目 我将为其创建一个自定义视图和一个滑块 客户可以
  • 从 Flowable Room ORM 发出每个项目

    我在 Room ORM 中有一个项目列表 我想在 Recycler 视图中显示它 数据正在从网络添加到数据库 问题是我每次都会得到从 Flowable 发出的整个列表 而不是每个项目 我尝试过 distinctUntilChanged 没有
  • 从表生成sql脚本

    替代文本 http www freeimagehosting net uploads 64fac9c8c4 gif http www freeimagehosting net uploads 64fac9c8c4 gif 是否可以为所有表生
  • 如何将 GKE Ingress 与 Nginx Ingress 结合使用?

    GKE 入口 https cloud google com kubernetes engine docs concepts ingress https cloud google com kubernetes engine docs conc
  • 用于查找一组字符串中最长公共起始子字符串的 R 实现

    这个问题只是要求在 R 中实现以下问题 查找一组字符串中最长的公共起始子串 https stackoverflow com questions 1916218 find the longest common starting substri
  • 如何防止 Visual Studio 自动完成功能覆盖下一个单词

    我在 Visual Studio 中遇到一个非常烦人的问题 我的版本是 2010 我安装了 ReSharper 和 VsVim 但我认为这并不重要 当我在某些现有代码开头的某些代码之前添加文本时 自动完成功能喜欢覆盖某些现有代码 以这个示例
  • 当数据类型为数字时,如何对谷歌图X轴进行排序

    我有一个数据表 第一列是 1 到 48 范围内的数字 Step Pct 1 0 2 0 3 0 4 35 5 45 6 55 7 60 我的代码如下所示 Grid Table is my html table containing the
  • 如何删除超过 (n) 天的文件,但保留 (n) 个文件,无论其年龄如何?

    我用 PHP 编写了以下内容 但我想知道是否有一种优雅的方法可以在 Linux shell 脚本中执行此操作 基本上删除超过 n 天的文件 但保留 n 最新的文件 无论其年龄如何 PHP foreach glob backup db as