如何将特定日期(例如 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
选项。 GNUmv
(Linux) 确实如此。