查找删除文件和目录的命令

查找删除文件和目录的命令

我无法使用以下语法删除文件夹,您能帮忙吗?

任务:删除给定路径中超过 6 小时的文件和文件夹

find $file -name "*" -mmin +360 -exec rm -f {}\;

答案1

您的命令有 2 个问题。

  1. 该命令rm -f dir不会删除名为 的目录dir。您需要使用该rmdir命令或使用rm -r dir.

  2. 目录必须为空才能删除。如果您有一个文件dir1/file1,那么您所拥有的命令将dir1首先尝试删除(这将失败),然后将尝试删除dir1/file1.使用rm -r将首先尝试清空目录。

第二部分的修复很简单,将-depth标志添加到 find 命令中,告诉 find 按深度优先顺序处理文件。

第一部分的修复比较困难,并且具体取决于您想要做什么。

问题在于您的声明“删除给定路径中超过 6 小时的文件和文件夹”。如果您dir112小时前创建,然后dir1/file111小时前创建但一小时前修改,您想做什么?正如您的声明所示,您希望删除该目录,因为它是在 11 小时前添加文件时最后修改的,而不是删除该文件,因为它是在一小时前修改的。但是该文件需要目录。

我最好的猜测是你想删除空的自上次修改以来已超过 6 小时的目录。为了使事情更清楚,这里有一个带有多余括号的命令。你需要知道这-o意味着or

    find $file -depth -mmin +360 '(' '(' -type f -exec rm -f '{}' ';' ')' -o \
           '(' -type d -empty -exec rmdir {} ';' ')' ')'

如果您的 find object 版本-empty只是忽略它并忽略有关无法删除非空目录的错误消息。

答案2

寻找/目录-厘米分钟+分钟-删除

您可以在哪里使用该选项

  • -cmin为创造的时间
  • -mmin修改时间
  • -amin对于访问时间

您可以根据您的情况使用,并请确保您提供正确的路径,/dir否则可能会杀死您的整个操作系统。

相关内容