首页 > 系统 > Linux > 正文

一天一个shell命令 linux文本操作系列-diff命令详解

2019-10-26 18:48:02
字体:
来源:转载
供稿:网友

这又是一个文件比较命令,熟练掌握会节省你很多工作。还记得comm命令吗?diff比他更加复杂,好用,不仅能比较文件,还能比较目录。 当一个文件有多个版本时候,或者更多复杂的文件,目录比较时,你会期望有一个比comm更有用的命令,diff正是为此而生。

全称:different file

实例:

文件1: v1.txt

代码如下:
hello
  world v1_echo
  v1_diff
  v1_comm
 shell is easy!

文件2: v2.txt

代码如下:
hello world!
v2_echo
 v1_diff
 easy shell!

1.普通比较:
$diff v1.txt v2.txt

代码如下:
1,2c1,2
 < hello world
 < v1_echo
 ---
 > hello world!
 > v2_echo
 4c4
 < v1_comm
 ---
 > easy shell!

列出比较的区别,数字为行数,c是compare

2.一体化输出:

$diff -u v1.txt v2.txt > version.patch

代码如下:
-v1_echo
 +hello world!
 +v2_echo
 v1_diff
 -v1_comm
 +easy shell!
 shell is easy!

"+"表示补充的行,"-"表示删去的行

3. 更新覆盖v1.txt,注意这里借用了patch

$patch –p1 v1.txt< version.patch

4. 比较v1,v2文件,仅输出v2的变化

$diff -e v1.txt v2.txt

代码如下:
 4c
 easy shell!
 .
 1,2c
 hello world!
 v2_echo
 .

5.比较目录

借用书上一段解释:

-N 将所有确实的文件视为空文件
-a 将所有文件市委文件文本
-u 生成一体化输出
-r 遍历目录下的所有文件

比较两个目录下所有文本信息

$diff –Naur directory1 directory2

除非你确定这两个目录基本相同,不然不推荐这么用。

6.工作疲劳后,尤其同时做很多事情的时候,会忘了有没有做过上传,或者修改某个目录下的文件。可以这样:

$diff v1.txt /${dir}

直接比较同名文件,高强度下的工作者相信真有体会。

解读下—help

太长,截取少部分解读一下。

代码如下:
Mandatory arguments to long options are mandatory for short options too.
 --normal                                        output a normal diff (the default)
 -q, --brief                                      report only when files differ

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表