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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/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了我个🍗