递归对比目录差异shell脚本

1,001次阅读
一条评论

共计 723 个字符,预计需要花费 2 分钟才能阅读完成。

递归对比目录差异shell脚本

应用发新版一段时间后遇到点小问题,需要对比下新旧版本目录里文件,(>人<;)打扰我疯狂星期四

#!/bin/bash

if [ $# != 3 ] ; then
    echo -e "# 对比2个目录,把dir2下比dir2下不同的文件(新建或不一致)的,全部保存到dir3"
    echo "USAGE: $0 dir1 dir2 bakdir"
    exit 1;
fi

dir1=`cd $1 && pwd`
dir2=`cd $2 && pwd`
mkdir -p $3
dir3=`cd $3 && pwd`

echo '============================================'
echo "src dir:" $dir1
echo "dst dir:" $dir2
echo "bak dir:" $dir3
echo '============================================'

cd $dir2

# 对比两个目录都存在的文件内容
for i in `diff -qr ${dir1} ${dir2} | egrep "^Files.*differ$" | sed 's/^Files .* and \(.*\) differ$/\1/'`
do 
    #echo $i
    echo ${i#${dir2}/} | xargs -i cp --parents {} ${dir3}
done

# 对比两个目录不存在的文件或目录
for j in `diff -qr ${dir1} ${dir2} | awk '/^Only/ {sub(/:/,"/",$3);print $3$4}' | egrep "^${dir2}.*"`
do
    echo ${j#${dir2}/} | xargs -i cp -r --parents {} ${dir3}
done

测试了下可行,然后发给他,正好他也在疯狂星期四,V了我个🍗

正文完
 
xadocker
版权声明:本站原创文章,由 xadocker 2022-08-25发表,共计723字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(一条评论)
鸟叔 评论达人 LV.1
2022-09-08 10:47:09 回复

鸟叔从十年之约来拜访,欢迎回访~~

 Windows  Chrome  中国香港阿里云