将文件移到另一个比date更早的目录

我正在寻找一个解决scheme来移动比今天更早的文件。 我的日志分区已满,但无法删除它们。 他们需要很长的时间。 无论如何,我想出了一个解决scheme是:

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

这会工作吗? 由于“ -timetime 365 ”的问题,这会把今年的文件从今天移到新的位置吗?

谢谢!

你几乎是对的。 -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 {} \; 

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

该命令移动源目录下的/ source目录下的所有文件和所有子文件夹:

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

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

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

您可以使用此命令,并指定只查找文件,而不查找目录,并且文件大于一年

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

如果经常访问文件,可以使用下面的命令

 find /sourcedirectory -type f -atime +365 -exec mv -t /destinationdirectory {} +;