免费注册 查看新帖 |

Chinaunix

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

这个shell怎么写? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-04 16:29 |只看该作者 |倒序浏览
两个Linux PC 上的同一个文件夹(文件夹里有很多文件夹和文件,一台PC B上的目录是另一太PC A上的备份),PC A的目录里由于一些操作加了些文件和文件夹,现在想通过shell脚本把这些比 PC B上多的文件删除(不能直接从pc B上copy 整个目录过去,因为有些文件内容改了),请教大侠们该怎么写这个脚本啊?

论坛徽章:
0
2 [报告]
发表于 2008-03-04 16:53 |只看该作者

回复 #1 aaaaal 的帖子

貌似挺有难度的
我提供个思路如何
1.分别执行ls -lR 把结果重定向到文件1 2里面
2.比较两个文件 得到多余的文件信息
3.删掉多余的文件

论坛徽章:
0
3 [报告]
发表于 2008-03-04 17:17 |只看该作者
可以利用diff,例如:
diff btest  btest-bak/ -r|grep '^Only in'|awk '{print $4}'
aa
bb
fjksdjf
jjtest
这些文件以及目录就是在btest目录中新增的目录,删除他们即可

论坛徽章:
0
4 [报告]
发表于 2008-03-04 17:23 |只看该作者

回复 #3 jiangxue1327 的帖子

问题是他们不在一个pc上啊,而且也不能从一个pc拷贝到另一个pc

论坛徽章:
0
5 [报告]
发表于 2008-03-04 17:29 |只看该作者
on A_host:

cd /path/to/A; find . | ssh user@B_host_ip  "cd /path/to/B; grep -vxFf <(find .)" | xargs rm -rf

或者

on B_host:

cd /path/to/B; find . | ssh user@A_host_ip  "cd /path/to/A; grep -vxFf <(cat) <(find .) | xargs rm -rf"

[ 本帖最后由 seeLnd 于 2008-3-4 17:47 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2008-03-04 17:47 |只看该作者

回复 #5 seeLnd 的帖子



大哥能否具体解释下?小弟太菜了

论坛徽章:
0
7 [报告]
发表于 2008-03-04 18:13 |只看该作者

回复 #6 loveoov 的帖子

分别在两台机器上运行find, 用grep找出不同,传递给rm去删除,
重点在于ssh的特性和grep的功能,以及bash的进程替换,
ssh的虚拟终端可以重定向远程进程的输入输出,
grep和进程替换你可以man一下或者看看本版精华
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP