将早于某个日期的文件移动到另一个目录

将早于某个日期的文件移动到另一个目录

我正在寻找一种解决方案来移动一年前的文件。我的日志分区快满了,但我无法删除它们。它们需要很长时间。无论如何,我想到的一个解决方案是:

find /sourcedirectory -mtime 365 -exec mv "{}" /destination/directory/ \;

这会有用吗?问是因为“-时间 365“这会将距今一年前的文件移动到新位置吗?

谢谢你!

答案1

你几乎是对的。-mtime 365将是所有正好有 365 天的文件。 你想要那些有 365 天或更长时间的文件,这意味着在+数字前添加一个,就像这样-mtime +365

您可能还对该标志感兴趣-maxdepth 1,它可以阻止您移动子目录中的项目。

如果您想确保只移动文件而不是目录,请添加-type f到该行。

在该行的末尾我们添加\;,以便find知道这是我们正在执行的命令的结束。

因此该行应该是:

find /sourcedirectory -maxdepth 1 -mtime +365 -type f -exec mv "{}" /destination/directory/ \;

为了安全起见,首先执行 ls -l 而不是 mv - 这样,您可以在使用 mv 重新运行它之前提前检查您是否获得了所需的文件,如下所示:

find /sourcedirectory -maxdepth 1 -mtime +365 -type f -exec ls -l {} \;

答案2

使用上述解决方案时要小心,我使用了它们并最终移动了所有子文件夹中的所有文件!!!!

此命令移动 /source 目录中的所有文件以及源目录下的所有子文件夹:

find /sourcedirectory -mtime +365 -exec mv "{}" /destination/directory/ \;

相反,仅对 /sourcedirectory 中的文件使用选项 -maxdepth 1

find /sourcedirectory -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;

答案3

您可以使用此命令,并指定仅查找文件而不是目录,并且文件已存在一年以上

find /sourcedirectory -type f -mtime +365 -exec mv "{}" /destination/directory/ \;

答案4

$ find /sourcedirectory/ -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;

find: missing argument to `-exec'

正确的做法是删除结尾的斜杠/sourcedirectory/

$ find /sourcedirectory -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;

相关内容