免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2041 | 回复: 6
打印 上一主题 下一主题

如何让 cp 命令根据时间覆盖存在的文件?5555着急呀 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-07 22:29 |只看该作者 |倒序浏览
如题,我初学shell,不太清楚,linux如此强大,这个需求不是问题吧
如果一条cp命令能做到当然好了,如果不能,请大家指教,谢谢。

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

:em12:

[ 本帖最后由 ybbkd2 于 2006-8-7 22:42 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-08-07 22:32 |只看该作者

发现个好东西

努力学习中。。。。。

[ 本帖最后由 ybbkd2 于 2006-8-7 22:39 编辑 ]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2006-08-07 23:19 |只看该作者
应该不是什么多难的问题,抽出点时间多看看置顶的十二篇/十三问吧

论坛徽章:
0
4 [报告]
发表于 2006-08-08 09:01 |只看该作者
可以讲的再仔细 一些吗?对于 需求还是 不是很清楚啊 !

论坛徽章:
0
5 [报告]
发表于 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 {} \;

论坛徽章:
0
6 [报告]
发表于 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 编辑 ]

论坛徽章:
0
7 [报告]
发表于 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 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP