共计 723 个字符,预计需要花费 2 分钟才能阅读完成。
应用发新版一段时间后遇到点小问题,需要对比下新旧版本目录里文件,(>人<;)打扰我疯狂星期四
#!/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了我个🍗
正文完