Answers:
你说的差不多。-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 {} \;
exec
语句的结尾。请参见手册页find
。
使用上述解决方案时要小心,我使用了它们并最终移动了所有子文件夹中的所有文件!
此命令将所有文件移至/ source目录中,并将所有子文件夹移至源目录下:
find /sourcedirectory -mtime +365 -exec mv "{}" /destination/directory/ \;
相反,仅对/ sourcedirectory中的文件使用选项-maxdepth 1
find /sourcedirectory -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;
-type f
。您的意思是说子文件夹确实被移动了,但是它们的内容保留在子文件夹中而不是从子文件夹中移走了吗?
$ 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/ \;
find: missing argument
错误,但是我确实同意删除尾随斜杠/sourcedirectory
是正确的。
mtime
是修改时间(听起来像您可能想要的-大部分时间都是如此)。如果经常读取/引用这些日志,则可能要使用-atime
(最后访问时间)。