免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: volunteer01
打印 上一主题 下一主题

sed问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-04-22 01:01 |只看该作者
猜测楼主是想定期检测某目录下的文件状态是否改变。

如果是这个目的,没有必要搞那么复杂:

  1. if find urpath -type f | xargs md5sum | tee status2 | diff - status ; then
  2.     do something
  3.     mv status2 status
  4. fi
复制代码

[ 本帖最后由 kwokcn 于 2009-4-22 01:04 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2009-04-22 10:05 |只看该作者

回复 #9 kwokcn 的帖子

1. 有执行权限,执行了,只是结果不是我想要的而已。
2. 由于两个find命令是在不同的系统上执行的,他们遍历文件夹的顺序有点不一样,即使两个test.txt里面对应的文件的md5都一样,diff出来也是不一样的。
3. kwokcn  (狼烟) 是对的,手误敲错了。

论坛徽章:
0
13 [报告]
发表于 2009-04-22 10:07 |只看该作者

回复 #11 kwokcn 的帖子

我想定期检查某目录下的文件的md5值有没有改变,不知道你的代码可以不?能不能解释一下,谢谢!

论坛徽章:
0
14 [报告]
发表于 2009-04-22 11:56 |只看该作者
原帖由 volunteer01 于 2009-4-22 10:05 发表
1. 有执行权限,执行了,只是结果不是我想要的而已。
2. 由于两个find命令是在不同的系统上执行的,他们遍历文件夹的顺序有点不一样,即使两个test.txt里面对应的文件的md5都一样,diff出来也是不一样的。
3. ...

2、可以再加一个sort管道把顺序统一起来再进行diff。

论坛徽章:
0
15 [报告]
发表于 2009-04-22 13:12 |只看该作者
原帖由 volunteer01 于 2009-4-22 10:07 发表
我想定期检查某目录下的文件的md5值有没有改变,不知道你的代码可以不?能不能解释一下,谢谢!

find urpath -type f | xargs md5sum | tee status2 | diff - status
find urpath -type f:遍历urpath目录树下的普通文件;
xargs md5sum:将find的结果传递给md5sum,获取相应md5值;
tee status2:把标准输出重定向到名为status2的文件中;
diff - status:-表示"find urpath -type f | xargs md5sum | tee status2"的输出,将该输出与名为status的文件进行diff操作。

直接if是由diff返回值决定的,完全匹配时diff返回值为0,存在差异时diff返回值为1,其他情况(例如文件不存在)diff返回值为2。

do something:伪码,就是把你要进行的处理写进来。

mv status2 status:前面的处理完成后,保存当前的md5情况。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP