![使用 mv,可以对文件进行时间依赖吗?](https://linux22.com/image/36929/%E4%BD%BF%E7%94%A8%20mv%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%AF%B9%E6%96%87%E4%BB%B6%E8%BF%9B%E8%A1%8C%E6%97%B6%E9%97%B4%E4%BE%9D%E8%B5%96%E5%90%97%EF%BC%9F.png)
假设我有一个特定的时间和日期。我想保留在该日期之前最后编辑的所有文件,但自该日期以来编辑过的所有文件我想保留在mv
其他地方。man
的页面并未mv
直接显示这是可能的mv
。我认为以下某种形式应该有效:
ls -t | head -n $number
其中$number
指定自我指定的时间和日期以来已编辑的文件数。然后我可以以某种方式将其提供mv
给mv
这些文件(还没有想出具体如何做到这一点)。这样做的缺点是,我必须计算自我指定的日期和时间以来已编辑了多少个文件。有没有一种方法可以让我只指定日期和时间,然后让我的计算机为我找出需要mv
编辑的文件?mv
如果没有,那么我将如何完成上面编写的命令以将这些文件名提供给将mv
它们全部mv
编辑到同一位置?
答案1
find /path/to/dir -mtime +5 -exec mv {} /target/path/ ';'
/path/to/dir
会将超过五天的所有文件移至/target/path。
你可以尝试一下看看实际会执行什么:
find /path/to/dir -mtime +5 -exec echo mv {} /target/path/ ';'
请注意,该-mtime
参数检查文件的修改时间。看看-ctime
或-atime
在查找的联机帮助页了解更多详情。
如果您想以分钟为单位指定时间,请使用-mmin
,-cmin
和之一-amin
。
要查找早于特定时间的文件,请使用-
代替+
,例如-mmin -30
。
另一种方法是使用xargs
( 它将用每个输入行执行一个命令;联机帮助页):
find /path/to/dir -mtime +5|xargs -i echo mv {} /target/path
(删除“回声”以实际移动东西)