如何在 Linux 中删除超过 30 天的文件如何在 Linux 中删除超过 30 天的文件如何在 Linux 中删除超过 30 天的文件如何在 Linux 中删除超过 30 天的文件
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 中删除超过 30 天的文件

“本 Linux 教程介绍了如何删除超过 30 天的文件。读完本文后,您将能够根据文件的创建时间来删除它们。由于所有 Linux 用户都必须知道如何根据特定的 mtime(修改/创建时间)查找和删除文件,因此该内容针对新用户和有经验的用户进行了优化。下面显示的所有示例对于每个 Linux 发行版都有效。

本文档中包含的所有说明均包含屏幕截图,使每个 Linux 用户都能轻松理解和应用它们。 ”

注意:本文使用超过 30 天的示例文件,但您可以通过将 30 替换为您想要的任何数字来更改天数。

在 Linux 中删除 30 天前的文件

首先,让我们看看如何使用 ls (列表)命令列出显示日期的文件,后跟用于长列表的 -l 标志和路径。就我而言,路径是位于当前目录下的 LinuxHintDirectory 目录。

ls -l LinuxHintDirectory/

如上图所示,有两个文件和2个目录的历史超过30天。我们可以看到文件wpa.hash和wp-config.php,以及wpascan和zmap目录。

下面的命令将删除指定路径中的文件(无目录)(如上所述,我的路径是位于当前路径下的LinuxHintDirectory)。

注意:就我而言,我正在处理由 root 用户创建的文件。不建议以 root 身份大量删除文件。

sudo find LinuxHintDirectory -type f -mtime +30 -delete

注意:您可以将+30替换为+x(该数字根据您的需要任意)来查找早于x的文件。或者 -x 查找比 x 新的文件。区别在于加号和减号。

正如您在上图中看到的,文件 wpa.hash 和 wp-config.php 已使用所描述的命令成功删除,其中:

sudo: 如果您要删除的文件需要超级用户权限,此命令会授予权限。删除文件时使用 sudo 并不是最好的选择;我仅将其用于示例。

查找:

LinuxHintDirectory在前面的示例中,LinuxHintDirectory是存储我要删除的文件的目录。该字段必须替换为您要删除的文件的实际路径。

-type: 此查找命令标志用于定义要删除的文件类型(对文件使用 f,对文件使用 f >d 用于目录)。

f: 使用 -type 标志后,在本例中,f 用于指定我们要删除除目录之外的文件。

-mtime: -mtime 标志用于指定我们要根据文件的创建或修改时间查找文件。该标志后面必须跟有减号 (-) 以及指定日期之后创建/修改文件的天数。或者加号 (+),后跟创建或修改早于 X 天的文件的天数。

+30: 如前所述,-mtime 标志后面必须跟有我们要查找文件的天数。在本例中,+30 指定 30 天前创建的文件;您需要将数字替换为要定义为参数的天数。

-delete: 该标志指示 find 命令删除与前面描述的标志匹配的文件。

为了以防万一,我想展示另一个示例,显示带有子目录的路径,如下所示,其中本地 LinuxHintDirectory 是从用户的主目录定义的。

sudo find ~/LinuxHintDirectory -type f -mtime +30 -delete

现在我们可以在下面的屏幕截图中看到 LinuxHintDirectory 位置包含子目录 emptyDir1、emptyDir2、linuxdir3、Templates、<测试,和触摸。

根据下面显示的日期,唯一符合条件的要删除的目录是 linuxdir3、Templates、test 和 touchp >。

ls -l LinuxHintDirectory/

现在让我们看看当您将 -type f 替换为 -type d 来指定目录时会发生什么。

sudo find ~/LinuxHintDirectory -type d -mtime +30 -delete

如下所示,在所有符合 30 天以上条件的目录中,仅删除了两个目录:linuxdir3 和 Templates。这是因为上一个命令仅删除空目录。您可以使用上述命令递归地删除目录。这就是为什么您在最后一个屏幕截图中看到错误,警告它无法删除非空列出的目录。

要删除其中包含内容的目录,我们将 find 命令与 rm 命令结合起来。在此之前,我们通过添加 –R (递归)标志来检查 linuxdir 目录中的内部文件和子目录,如下所示。

ls -Rl linuxdir/

正如您在上面看到的,所有文件和目录都超过 30 天。因此,要删除所有这些,我执行以下命令,如下所示。

sudo find ./linux/linuxdir -type d -mtime +30 -exec rm -rf {} \;

正如您所看到的,目录linxhintdir没有被删除,但它的所有内容都被删除了。正如您在下面的屏幕截图中看到的,linuxdir 持久存在的原因是该目录是今天创建的,但包含旧文件。

现在让我们递归地检查 /opt 目录。

注意:在此步骤之前我删除了 google 目录。

您可以在下面看到完整的序列。如您所见,有两个目录已超过 30 天(gvm 和 teamviewer)。它们都有文件和子目录。让我们通过运行之前使用的相同命令来删除 gvm 及其所有内容,其中我们仅更改文件的路径(现在 gvm)。

sudo find gvm -type d -mtime +30 -exec rm -rf {} \;

可以看到,运行命令后,只剩下teamviewer目录; gvm 已成功删除。

结论

如您所见,删除特定日期之前或之后的文件非常简单。任何 Linux 用户,无论其知识水平如何,都必须知道如何按日期查找和管理文件。本教程中解释的命令对所有 Linux 发行版都有效。建议您应用上述命令进行练习(使用实验或测试环境)。请记住,+ 符号表示“超过”,而减号 (-) 表示“更新于”。

我希望这篇解释如何在 Linux 中删除超过 30 天的文件的文章对您有所帮助。持续关注我们,获取更多专业教程。

©2015-2025 艾丽卡 support@alaica.com