shell脚本之对比不同目录的下的文件

老大让负责一部分代码的版本,担心公共目录下有人可能会稍微修改部分代码,因此把代码备份到自己的一个目录中,上传svn之前,如果发现公共目录的下的文件被修改,则找出变化部分,避免出现不可知的文件变化。
使用diff命令可以很容易的比较文件之间的差异,但是,如果要负责的文件比较多的话,那么一个个的比较是比较麻烦的因此,想写一个脚本文件,让它帮我对比文件之间的差异,偷懒嘛,O(∩_∩)O哈哈哈~


脚本内容如下:
#!/bin/bash
# @file         for_diff.sh
# @author       ymm
# @brief        比较不同目录下指定文件目录的差异
# @date         2014/2/28 16:18:10
# @History
# 1、2014/2/28 16:18:10  author ymm    初步完成


path_src=~/work/ymm/omc_account
path_desc=/opt/opthb/src/cpp/hla/account/omc_account


#只比较备份文件中的.cpp .h 和makefile文件,如需比较其他文件,可以指定
files=$(ls $path_src/*.cpp $path_src/*.h $path_src/makefile)
#files=$(ls $path_src/*)


for file in $files
do
    filename=$(basename $file )
    file_desc=${path_desc}/${filename}
    
    diff ${file} ${file_desc} 1>/dev/null 2>&1 && result=0 || result=1


    if [ "$result" == 1 ];then
        echo "$filename is diff"
    fi
done




用到的知识点:
1、通过basename可以通过文件的绝对路径获取文件名
2、1>/dev/null 2>&1 方法把输出重定向到“/dev/null”,也就是不输出
3、shell命令 && result=0 || result=1 通过变量来判断shell命令执行成功与否


需要注意的是:
使用“ls $path_src/*.cpp $path_src/*.h $path_src/makefile”命令指定了要比较的文件为源文件、头文件和makefile,如果希望对比目录的下的所有文件,不能使用“ls $path_src/” ,而要使用“ls $path_src/*”,比较不同,如下:

 
[billing_dx@bmcs1 shell]$ ls /account/work/ymm/shell/test/*
/account/work/ymm/shell/test/for.sh       /account/work/ymm/shell/test/run
/account/work/ymm/shell/test/for_diff.sh  /account/work/ymm/shell/test/while.sh


[billing_dx@bmcs1 shell]$ ls /account/work/ymm/shell/test/ 
for.sh  for_diff.sh  run  while.sh



可以看到,如果不加“*”的话,查看的文件都是不带路径的,这个时候再diff比较文件的话,比较的就是“path_src”目录下的文件,而是当前目录的了。希望大家注意。

自己的小打小闹,但是希望对大家有所帮助!


其实都是简单的操作,但是,我想着如果平常的一些很繁琐的事情都用shell脚本来实现的话,虽然不是一件多么有技术含量的事情,但我感觉这对于我自己来说,可以节省一些时间,而这样,我感觉就已经够了!努力学习进步ing!`


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值