这是我正在使用的命令:
find absolute-path -name "*" -amin -120 -exec cp -f absolute-destination {} \;
我尝试将许多目录从一个目录复制到另一个目录,但仅限于过去 2 小时内创建的目录。
但是我的命令不起作用,我真的不明白为什么,如果这不明显的话,我不是一个经验丰富的 Linux 用户。从我得到的信息来看,cp
似乎将我的预期目的地解释为源。
我甚至尝试过使用xargs
,但我对其了解得更少。
在 Debian Squeezy 中使用 Bash 并以 root 身份运行命令。
答案1
从我得到的信息来看,
cp
似乎将我预期的目的地解释为源头。
是的。这是因为一般的 Linux/Unix 语法是这样的:
[some command] [some command options] [source item] [destination item]
那么看看你的命令:
find absolute-path -name "*" -amin -120 -exec cp -f absolute-destination {} \;
这cp -f absolute-destination {}
是倒过来的,因为{}
表示命令找到的源文件find
,而“绝对目标”就是它本来的样子,即目标。因此,命令的这一部分应该改写为cp -f {} absolute-destination
。
此外:
-name "*"
如果您要根据时间搜索所有文件,那么这是多余且多余的;这意味着您可以放弃它。- 此外,使用
amin
有点令人困惑,因为-amin -120
表示“该文件已访问在过去的 120 分钟内。”如果你想采取行动创建文件的时间,yhat 应该改为cmin
—又名:n
几分钟前更改的—;更多详细信息请参阅 Linuxfind
请参阅手册页。
因此最终的命令是:
find absolute-path -cmin -120 -exec cp -f {} absolute-destination \;
但是在运行该cp
命令之前,您应该始终进行“试运行”,以echo
准确查看发生的情况,如下所示:
find absolute-path -cmin -120 -exec echo {} \;
请记住,对这样的命令进行测试“试运行”前从长远来看,运行实际/最终命令将为您省去很多麻烦。特别是如果您计划以 的形式运行该命令root
。
您永远不知道自己是否可能在命令逻辑中犯了一个简单的、无意的错误,而这个错误可能会以意想不到的方式搞砸。未经测试就匆忙将错误结构的命令投入“生产”可能会在开始时为您节省几分钟,但随后可能会导致数小时(在某些情况下是数天)的清理工作。总是在命令行中工作时要注意安全。