移动在特定日期之后修改的文件

移动在特定日期之后修改的文件

如何将特定日期(例如 7 天)后修改的文件移动到另一个目录?我笨拙地尝试发送输出

ls -t | head -n XX

但最近了解到解析 ls 并不是一个好主意。

答案1

你是对的,最好避免解析ls。下面的解决方案使用find.相比之下,它甚至可以处理最困难的文件名。

要将当前目录中 7 天以内修改的所有文件移动到/destination/path,请使用:

find . -mindepth 1 -maxdepth 1 -mtime -7  -exec mv -t /destination/path {} +

怎么运行的

  • find . -mindepth 1 -maxdepth 1

    这会查找属于当前目录的文件(但不是当前目录本身)。

  • -mtime -7

    这告诉find我们只选择文件少于七日了。

  • -exec mv -t /destination/path {} +

    这告诉find执行mv命令将这些文件移动到/destination/path.

    这是有效的,因为find将替换{} +许多文件名,从而mv需要创建更少的进程。

    并非所有版本都mv支持该-t选项。 GNU mv(Linux) 确实如此。

相关内容