Chinaunix

标题: 如何让 cp 命令根据时间覆盖存在的文件?5555着急呀 [打印本页]

作者: ybbkd2    时间: 2006-08-07 22:29
标题: 如何让 cp 命令根据时间覆盖存在的文件?5555着急呀
如题,我初学shell,不太清楚,linux如此强大,这个需求不是问题吧
如果一条cp命令能做到当然好了,如果不能,请大家指教,谢谢。

7:00前搞不定就。。。。惨。。

:em12:

[ 本帖最后由 ybbkd2 于 2006-8-7 22:42 编辑 ]
作者: ybbkd2    时间: 2006-08-07 22:32
标题: 发现个好东西
努力学习中。。。。。

[ 本帖最后由 ybbkd2 于 2006-8-7 22:39 编辑 ]
作者: 寂寞烈火    时间: 2006-08-07 23:19
应该不是什么多难的问题,抽出点时间多看看置顶的十二篇/十三问吧
作者: stephen412    时间: 2006-08-08 09:01
可以讲的再仔细 一些吗?对于 需求还是 不是很清楚啊 !
作者: ruifox    时间: 2006-08-08 10:08
确实不清楚楼主到底要干什么。
如果是根据修改时间对文件进行相应处理,建议用find命令实现:

-mtime和-exec配合使用:
find . -mtime +3 -exec yourshell {} \;  查找最近三天没有修改的文件。

或是利用文件比较的方式:(以下代码摘抄自论坛)
touch -t 04241112 starttemp  #精确到12分钟
touch -t 04241220 endtemp  #截止到12点20
find [dir] -newer starttemp -a ! -newer endtemp -exec ls -l {} \;
作者: ybbkd2    时间: 2006-08-13 18:16
主要是想通过一个脚本
根据文件最后修改时间将src目录所有文件及目录 更新到dist目录。

目前的做法是使用 src 完全覆盖到 dist,这样做必须保证 src 所有文件是最新的。

  1. cp -rf /opt/src /opt/dist
复制代码


这样做的缺点是,如果文件太大浪费很多时间。巧妙一点的做法是 根据最后修改时间进行相应的覆盖操作。
如果 src中的文件最后修改时间大于dist中相应文件的最后修改时间则进行覆盖,否则skip。

[ 本帖最后由 ybbkd2 于 2006-8-13 18:19 编辑 ]
作者: liang573728    时间: 2006-08-13 19:59
你看这个行不行
[devis@speed22 tmp2]$ cat 1.sh
#!/bin/sh

for var in `ls *`
do
[[ $var -nt "/home/_devis/tmp/$var" ]]&& echo "$var new"
[[ $var -ot "/home/_devis/tmp/$var" ]]&& echo "/home/_devis/tmp/$var old"
done


将其中的路径和&&语句后命令改为你自己的


不过,我用sh -x 运行时候,没有问题
[devis@speed22 tmp2]$ sh -x 1.sh
++ ls 1.sh 2.txt 3.txt
+ [[ 1.sh -nt /home/_devis/tmp/1.sh ]]
+ echo '1.sh new'
1.sh new
+ [[ 1.sh -ot /home/_devis/tmp/1.sh ]]
+ [[ 2.txt -nt /home/_devis/tmp/2.txt ]]
+ echo '2.txt new'
2.txt new
+ [[ 2.txt -ot /home/_devis/tmp/2.txt ]]
+ [[ 3.txt -nt /home/_devis/tmp/3.txt ]]
+ [[ 3.txt -ot /home/_devis/tmp/3.txt ]]
+ echo '/home/_devis/tmp/3.txt old'
/home/_devis/tmp/3.txt old


但是用1.sh直接运行时候,显示错误,请高手指点
done
[devis@speed22 tmp2]$ 1.sh
/home/_devis/1.sh: line 10: ur_command: command not found
/home/_devis/1.sh: line 10: ur_command: command not found
/home/_devis/1.sh: line 10: ur_command: command not found

[ 本帖最后由 liang573728 于 2006-8-13 20:02 编辑 ]




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2