LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1294|回复: 14

请教如何在一个目录中两两判断两个文件是否相同?

[复制链接]
发表于 2007-1-7 20:40:27 | 显示全部楼层 |阅读模式
rt,大家帮帮忙阿,谢谢
发表于 2007-1-7 21:13:51 | 显示全部楼层
用diff
或计算md5校验和,用md5sum

后一种方法在大文件时速度会较慢
可以先比较文件大小是否相等再计算
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-7 21:31:33 | 显示全部楼层
谢谢ls,不过我是想问怎么实现两两比较。。。
回复 支持 反对

使用道具 举报

发表于 2007-1-7 21:51:19 | 显示全部楼层
;-)最好是能够实现循环的比较

大致意思是这样的,比如说在/home/user/test1/下有4个regular的文件file1,file2,file3,file4

想对它们做一一比较,在之前的帖子看到sunway的解答,如果比较两个文件的不同用

diiff file1 file2就可以了,现在是想要循环的比较,file1和file2,file3,file4比一遍,file2再和

file3,file4比一次............想用for来着的,结果for好象不支持嵌套,

for xx in $(ls $1)
     for yy in $(ls $1)

这样会报syntax error的错误
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-7 22:13:46 | 显示全部楼层
ls的也选了董远的linux课??汗。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-7 22:15:46 | 显示全部楼层
for好像支持嵌套吧。。。。
回复 支持 反对

使用道具 举报

发表于 2007-1-7 22:37:05 | 显示全部楼层
for怎么不支持嵌套了


  1. [0 No.2106 huan@huan ~/tmp/diff]$ touch a b 1 2

  2. [0 No.2107 huan@huan ~/tmp/diff]$ for f1 in *; do for f2 in *; do [[ $f1 == $f2 ]] && continue; echo "$f1, $f2"; done; done
  3. 1, 2
  4. 1, a
  5. 1, b
  6. 2, 1
  7. 2, a
  8. 2, b
  9. a, 1
  10. a, 2
  11. a, b
  12. b, 1
  13. b, 2
  14. b, a

  15. [0 No.2108 huan@huan ~/tmp/diff]$
复制代码
回复 支持 反对

使用道具 举报

发表于 2007-1-7 22:44:02 | 显示全部楼层
cmp,相当于windows命令fc
diff不便于比较binary文件
回复 支持 反对

使用道具 举报

发表于 2007-1-8 00:49:38 | 显示全部楼层
Post by liuyunfly
ls的也选了董远的linux课??汗。。。。



他那个题目难的很过分啊......
回复 支持 反对

使用道具 举报

发表于 2007-1-8 01:02:12 | 显示全部楼层
Post by huan
for怎么不支持嵌套了


  1. [0 No.2106 huan@huan ~/tmp/diff]$ touch a b 1 2

  2. [0 No.2107 huan@huan ~/tmp/diff]$ for f1 in *; do for f2 in *; do [[ $f1 == $f2 ]] && continue; echo "$f1, $f2"; done; done
  3. 1, 2
  4. 1, a
  5. 1, b
  6. 2, 1
  7. 2, a
  8. 2, b
  9. a, 1
  10. a, 2
  11. a, b
  12. b, 1
  13. b, 2
  14. b, a

  15. [0 No.2108 huan@huan ~/tmp/diff]$
复制代码



谢谢,我下回去好好琢磨琢磨
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表