文件/目录对比:diff命令
命令格式
diff [参数] [文件1或目录1] [文件2或目录2]
Linux diff命令用于比较文件的差异。
- diff以逐行的方式,比较文本文件的异同处。
- 如果指定要比较目录,diff会比较目录中相同文件名的文件,但不会比较其中子目录。
- diff程序的输出被称为补丁(patch),Linux系统中还有一个patch程序,可以根据diff的输出将a.c的文件内容更新为b.c
- 打补丁:patch file patch.log
命令参数
| 参数 | 描述 |
|---|---|
| -行数 | 指定要显示多少行的文本。此参数必须与-c或者-c参数一并使用。 |
| -a | 或者--text,diff预设只会逐行比较文本文件 |
| -b | 或--ignore-space-change ,不检查空格字符的不同。 |
| -B | 或--ignore-blank-lines ,不检查空白行。 |
| -c | 显示全部内容,并标出不同之处 |
| -C行数 | 或--context行数 与执行"-c-行数"指令相同。 |
| -i | 或--ignore-case ,不检查大小写的不同。 |
| -p | 若比较的文件为C语言的程序码文件时,显示差异所在的函数名称 |
| -N | 或--new-file ,在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。 |
| -P | 或--unidirectional-new-file ,与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。 |
| -r | 比较子目录中的文件 |
| -v | 显示版本信息 |
| -w | 或--ignore-all-space , 忽略全部的空格字符。 |
| -W | 或--width , 在使用-y参数时,指定栏宽。 |
| -x | 或--exclude , 不比较选项中所指定的文件或目录。 |
| -X | 或--exclude-from , 您可以将文件或目录类型存成文本文件,然后在=中指定此文本文件。 |
| -y | 或--side-by-side ,以并列的方式显示文件的异同之处。 |
| --left-column | 在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。 |
| --suppress-common-lines | 在使用-y参数时,仅显示不同之处。 |
具体使用
默认格式的diff:diff file1 file2
2c2
< world
---
> world2
3a4
> hell
5d5
< river
- 它分成三个部分:前面的"4",表示f1的第4行有变化;中间的"c"表示变动的模式是内容改变(change),其他模式还有"增加"(a,代表addition)和"删除"(d,代表deletion);后面的"4",表示变动后变成f2的第4行。
- c:change,内容改变
- a:addition,增加
- d:deletion,删除
- ---用于分割f1和f2
上下文格式的diff:diff file1 file2 -c
-> autotest-runtask diff 1.txt 2.txt -c
*** 1.txt 2020-08-09 18:09:24.000000000 +0800
--- 2.txt 2020-08-09 18:09:10.000000000 +0800
***************
*** 1,5 ****
hello
! world
goodbye
moutain
- river
--- 1,5 ----
hello
! world2
goodbye
+ hell
moutain
结果分成四部分:
- 第一部分的两行,显示两个文件的基本情况:文件名和时间信息
- *** 表示变动前的文件
- --- 表示变动后的文件
- 第二部分:15个星号,将文件的基本情况和变动内容分割开
- 第三部分:显示变动前的文件
- 1,5,表示行号
- 文件内容的每一行最前面,还有一个标记位:
- 空:无变化;
- !:该行有改动;
- -:该行被删除;
- +:该行新增
- 第四部分:显示变动后的文件
合并格式的diff:diff file1 file2 -u
➜ autotest-runtask diff 1.txt 2.txt -u
--- 1.txt 2020-08-09 18:09:24.000000000 +0800
+++ 2.txt 2020-08-09 18:09:10.000000000 +0800
@@ -1,5 +1,5 @@
hello
-world
+world2
goodbye
+hell
moutain
-river
- 第一部分:文件基本信息
- 第二部分:变动的部分用两个@@作为起首和结束
- -:表示第一个文件;+表示第二个文件
- 第三部分:变动的具体内容
并排格式的diff:diff file1 file2 -y
➜ autotest-runtask diff 1.txt 2.txt -y
hello hello
world | world2
goodbye goodbye
> hell
moutain moutain
river <
|:表示前后2个文件内容有不同
<:表示前面文件比后面文件多了1行内容
>:表示前面文件比后面文件少了一行内容
比较目录:diff 目录1 目录2
- 只显示不同行:
diff -r 目录1 目录2 -y --suppress-common-lines
文件/目录对比:diff命令的更多相关文章
- Linux文件/目录权限设置命令:chmod
文件/目录权限设置命令:chmod 这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限.该命令有两种用法: 用包含字母和操作符表达式的文字设定法 其语法格式为:chmod [w ...
- Linux 文本对比 diff 命令详解(整理)
diff 命令详解 1.概述 windows系统下面就有不错的文本对比工具可以使用,例如常用的Beyond Compare,WinMerge都是图形界面的比较工具而且使用非常方便,如果你仅仅是在win ...
- linux 比较两个文件夹不同 (diff命令, md5列表)
比较文件夹diff,可以直接使用diff命令 [root@~]# diff -urNa dir1 dir2 -a Treat all files as text and compare them li ...
- Linux的文件/目录的权限
文件类型 权限 属主 属组 目录名/文件名drwx------ 2 alice girls 4096 9月 25 11:33 alicedrwx------ 2 rose girls 4096 9月 ...
- Linux 文件/目录操作详解
目录 Linux 文件/目录操作详解 初识Linux 一.文件/目录显示命令 ls 二.目录创建命令 mkdir 三.目录转移命令 cd 四.当前目录显示命令 pwd 五.文件处理命令 rmdir 六 ...
- [C/C++][文件操作] 对比目录并列出同名较新文件、较旧文件 0.1
主要是模仿robocopy的部分功能 (robocopy /L 参数可以列出本地目录和备份目录中的异同之处,主要是标记出:较新的.较旧的.多出的文件 ) 现在还不会写GUI,打算后面自己做目录树dif ...
- 基于gulp编写的一个简单实用的前端开发环境好了,安装完Gulp后,接下来是你大展身手的时候了,在你自己的电脑上面随便哪个地方建一个目录,打开命令行,然后进入创建好的目录里面,开始撸代码,关于生成的json文件请点击这里https://docs.npmjs.com/files/package.json,打开的速度看你的网速了注意:以下是为了演示 ,我建的一个目录结构,你自己可以根据项目需求自己建目
自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...
- Linux 150命令之查看文件及内容处理命令 more split file diff paste wc dps2unix
more命令 使用more命令显示more /var/log/boot.log-20171129文件,可以从图中看出,系统在显示满一个屏幕时暂停,使用空格可以翻页,使用Q键可以退出. split sp ...
- Linux文件与目录操作 ls 命令(2)
说文件操作是最频繁地操作也不为过,在Linux中,使用ls命令可以列出当前目录中所有内容,本篇就先说说ls命令.本文所说的文件指文件和目录. ls命令常用选项 -a:显示指定目录下所有子目录与文件,包 ...
随机推荐
- SpringCloud 2020.0.4 系列之Eureka
1. 概述 老话说的好:遇见困难,首先要做的是积极的想解决办法,而不是先去泄气.抱怨或生气. 言归正传,微服务是当今非常流行的一种架构方式,其中 SpringCloud 是我们常用的一种微服务框架. ...
- 【Spring】Spring重要类层次图
- Linux argc,argv详解
来源:微信公众号「编程学习基地」 @ 目录 argc,argv是什么 如何解析程序参数 "选项"是什么? "选项字符串"是什么 解析参数 argc,argv是什 ...
- k8s replicaset controller 分析(3)-expectations 机制分析
replicaset controller分析 replicaset controller简介 replicaset controller是kube-controller-manager组件中众多控制 ...
- 线路由器频段带宽是是20M好还是40M好
无线路由器频段带宽还是40M好. 40M的信号强,速度快. 1.20MHz在11n的情况下能达到144Mbps带宽.穿透性不错.传输距离较远 40MHz在11n的情况下能达到300Mbps带宽.穿 ...
- 单片机STM32的启动文件详解--学习笔记
启动文件简介 启动文件由汇编编写,是系统上电复位后第一个执行的程序.主要做了以下工作: 1.初始化堆栈指针SP=_initial_sp 2.初始化PC 指针=Reset_Handler 3.初始化中断 ...
- 虚树 virtual-tree
我们发现,如果一棵树中真正需要处理的点很少,而总共点数很多时,可以只处理那些需要的点,而忽略其他点. 因此我们可以根据那些需要的点构建虚树,只保留关键点. oi-wiki上对虚树的介绍 我们根据一下方 ...
- 浅谈springboot自动配置原理
前言 springboot自动配置关键在于@SpringBootApplication注解,启动类之所以作为项目启动的入口,也是因为该注解,下面浅谈下这个注解的作用和实现原理 @SpringBootA ...
- JavaScript数组方法大集合
JavaScript数组方法集合 本文总结一下js数组处理用到的所有的方法.自己做个笔记. 数组方法 concat() 合并两个或多个数组 concat()能合并两个或者多个数组,不会更改当前数组,而 ...
- 事件消息生产消费中间件-OSS.DataFlow
系统重构解耦的过程涉及不同领域服务分拆,或同一服务下实时响应部分和非响应部分分拆,分解后的各部分通过异步消息的流转传递,完成整体的业务逻辑,但是频繁的在业务层面直接调用不同消息队列的SDK,个人感觉不 ...