假设我有一个特定的时间和日期。我想保留在该日期之前最后编辑的所有文件,但自该日期以来编辑过的所有文件我想保留在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
(删除“回声”以实际移动东西)