使用diff命令查找两个目录的差异,并将只存在new中的文件拷贝到old中

# 查找两个目录的差异,并将只存在new中的文件拷贝到old中

diff -bur new/ old/ |grep "只在 new/.*存在" > needcopy.txt

# 复制路径到第二列,生成cp new/*** old/*** 的指令

cat needcopy.txt | \
sed 's|只在 ||g' | sed 's| 存在:|/|g' | \
awk '{ printf("\"%s\" \"%s\"\n", $0, $0) }' | \
awk 'BEGIN { FS=" " } { sub("new","old",$2); print $0 }' | \
awk 'BEGIN { FS=" " } { print "cp", $0 }'

假设needcopy.txt的内容如下: 

只在 new/squashfs-root/usr/lib 存在:libbluetooth.so
只在 new/squashfs-root/usr/lib 存在:libbluetooth.so.3
只在 new/squashfs-root/usr/lib 存在:libbluetooth.so.3.19.7

那么,脚本执行后,输出结果如下:

cp "new/squashfs-root/usr/lib/libbluetooth.so" "old/squashfs-root/usr/lib/libbluetooth.so"
cp "new/squashfs-root/usr/lib/libbluetooth.so.3" "old/squashfs-root/usr/lib/libbluetooth.so.3"
cp "new/squashfs-root/usr/lib/libbluetooth.so.3.19.7" "old/squashfs-root/usr/lib/libbluetooth.so.3.19.7"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值