如何使用diff在linux下比较两个文件夹下相同文件的内容。请各位大哥大姐指教。。。
发布于 10 年前 作者 wangxuq 13600 次浏览 最后一次编辑是 8 年前

如何使用diff在linux下比较两个文件夹下相同文件的内容。请各位大哥大姐指教。。。

8 回复

@alsotang 这个好像只能比较两个文件,不能比较两个文件夹下的相同文件,比如A文件夹下边有a.tex,b.txt,c.txt,B文件夹下边有a.tex,b.txt,c.txt。然后要分别比较A,B下边相同文件名的文件内容。是文件的具体内容。关键是如果文件数目比较少,还可以手工一对一对进行比较,但是如果数目文件数量很大的话,可能就不太容易了。

apt-get install meld

meld file-a file-b

@fengxiaolong 不过这个命令好像在ppc64上不行呀。还是很感谢哈

可以写个bash脚本文件:

 #!/bin/bash
 
 for commonfile in `find "$@" -maxdepth 1 -type f -name "*" -printf '%f\n' |
 sort | uniq -c | sed -n "s/^ *$# //p"`
 do
   filelist=""
   for targetdir in $@
   do
     filelist=$filelist" $targetdir/$commonfile"
   done
 
   output=`diff $filelist`
   if [ $? -eq 1 ]
   then
     echo -e "== $commonfile ==\n"
     echo -e "$output\n"
   fi
 done

假设脚本文件名为meld.sh,执行chmod +x meld.sh,添加执行权限。

用法: meld.sh dir1 dir2 dir3 ...

例如,

# 比较两个文件夹tmp1和tmp2下面名字相同的文件:
# 如果文件的内容有不同,则输出这个文件名和不同之处
$ ./meld.sh tmp1 tmp2

@wangxuq 这样的啊,嘻嘻,木有在那个平台上搞过滴~

回到顶部