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