如何在 Linux 中删除超过 30 天的文件
“本 Linux 教程介绍了如何删除超过 30 天的文件。读完本文后,您将能够根据文件的创建时间来删除它们。由于所有 Linux 用户都必须知道如何根据特定的 mtime(修改/创建时间)查找和删除文件,因此该内容针对新用户和有经验的用户进行了优化。下面显示的所有示例对于每个 Linux 发行版都有效。
本文档中包含的所有说明均包含屏幕截图,使每个 Linux 用户都能轻松理解和应用它们。 ”
注意:本文使用超过 30 天的示例文件,但您可以通过将 30 替换为您想要的任何数字来更改天数。
在 Linux 中删除 30 天前的文件
首先,让我们看看如何使用 ls (列表)命令列出显示日期的文件,后跟用于长列表的 -l 标志和路径。就我而言,路径是位于当前目录下的 LinuxHintDirectory 目录。
如上图所示,有两个文件和2个目录的历史超过30天。我们可以看到文件wpa.hash和wp-config.php,以及wpascan和zmap目录。
下面的命令将删除指定路径中的文件(无目录)(如上所述,我的路径是位于当前路径下的LinuxHintDirectory)。
注意:就我而言,我正在处理由 root 用户创建的文件。不建议以 root 身份大量删除文件。
注意:您可以将+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 是从用户的主目录定义的。
现在我们可以在下面的屏幕截图中看到 LinuxHintDirectory 位置包含子目录 emptyDir1、emptyDir2、linuxdir3、Templates、<测试,和触摸。
根据下面显示的日期,唯一符合条件的要删除的目录是 linuxdir3、Templates、test 和 touchp >。
现在让我们看看当您将 -type f 替换为 -type d 来指定目录时会发生什么。
如下所示,在所有符合 30 天以上条件的目录中,仅删除了两个目录:linuxdir3 和 Templates。这是因为上一个命令仅删除空目录。您可以使用上述命令递归地删除目录。这就是为什么您在最后一个屏幕截图中看到错误,警告它无法删除非空列出的目录。
要删除其中包含内容的目录,我们将 find 命令与 rm 命令结合起来。在此之前,我们通过添加 –R (递归)标志来检查 linuxdir 目录中的内部文件和子目录,如下所示。
正如您在上面看到的,所有文件和目录都超过 30 天。因此,要删除所有这些,我执行以下命令,如下所示。
正如您所看到的,目录linxhintdir没有被删除,但它的所有内容都被删除了。正如您在下面的屏幕截图中看到的,linuxdir 持久存在的原因是该目录是今天创建的,但包含旧文件。
现在让我们递归地检查 /opt 目录。
注意:在此步骤之前我删除了 google 目录。
您可以在下面看到完整的序列。如您所见,有两个目录已超过 30 天(gvm 和 teamviewer)。它们都有文件和子目录。让我们通过运行之前使用的相同命令来删除 gvm 及其所有内容,其中我们仅更改文件的路径(现在 gvm)。
可以看到,运行命令后,只剩下teamviewer目录; gvm 已成功删除。
结论
如您所见,删除特定日期之前或之后的文件非常简单。任何 Linux 用户,无论其知识水平如何,都必须知道如何按日期查找和管理文件。本教程中解释的命令对所有 Linux 发行版都有效。建议您应用上述命令进行练习(使用实验或测试环境)。请记住,+ 符号表示“超过”,而减号 (-) 表示“更新于”。
我希望这篇解释如何在 Linux 中删除超过 30 天的文件的文章对您有所帮助。持续关注我们,获取更多专业教程。