将超过 30 天的文件夹移动到另一个文件夹

将超过 30 天的文件夹移动到另一个文件夹

我有一个目录,其中包含日常文件夹,每个文件夹中都有 1000 张图像。我想将超过 30 天的文件夹存档到存档文件夹。

我尝试了这个,它弄乱了所有内容,它将所有图像文件复制到存档文件夹而不是日期文件夹。

sudo find /home/lanein1/AshtonRPOUT/ -type f -mtime +30 -exec mv '{}' /home/lanein1/AshtonRPOUT/Arch/ \;

在此输入图像描述 我的脚本将所有图像复制到 arch 而不是单独的文件夹中。

在此输入图像描述

答案1

您想要查找目录,但正在查找纯文件 ( f)。用于d目录搜索:

sudo find /home/lanein1/AshtonRPOUT/ -type d -mtime +30 -exec mv '{}' /home/lanein1/AshtonRPOUT/Arch/ \;

答案2

要移动/home/lanein1/AshtonRPOUT/修改时间为过去 30 天的所有目录,但保持最顶层目录 ( /home/lanein1/AshtonRPOUT/) 不变,您可以使用

find /home/lanein1/AshtonRPOUT/ -mindepth 1 -maxdepth 1 -type d \
    ! -path '/home/lanein1/AshtonRPOUT/Arch*' -mtime +30 \
    -exec mv {} /home/lanein1/AshtonRPOUT/Arch/ ';' -prune

这里需要注意的事项:

  • 我们正在寻找目录,而不是文件,所以我们将使用-type d.

  • 目标目录包含在 搜索的目录集中find,因此我们使用! -path '...'来避开该路径。

  • 您不想尝试移动顶级目录,因此我们添加-mindepth 1开始查找下面那条路。同样,-maxdepth 1强制find不要进入子文件夹(您说您有子文件夹并且这些子文件夹仅包含文件)。

  • (这在这里不是必需的,因为我们使用-maxdepth 1但是...)移动目录将更改目录结构。因此我们-prune在最后添加。这将从将考虑的目录列表中删除移动的路径find。如果没有这个,find将尝试进入不存在的目录(如果找到并移动目录)。

相关内容