文件/目录对比: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:显示指定目录下所有子目录与文件,包 ...
随机推荐
- [no code][scrum meeting] Beta 2
例会时间:5月14日11:30,主持者:乔玺华 下次例会时间:5月15日11:30,主持者:肖思炀 一.工作汇报 人员 昨日完成任务 明日要完成的任务 乔玺华 - 开issue,分配时间 黎正宇 - ...
- stm32f103中断学习总结
一.NVIC 介绍 NVIC 英文全称是 Nested Vectored Interrupt Controller,中文意思就是嵌套向量中断控制器,它属于 M3 内核的一个外设,控制着芯片的中断相关功 ...
- Exynos4412 中断处理流程详解
Linux 中,当外设触发中断后,大体处理流程如下: a -- 具体CPU architecture相关的模块会进行现场保护,然后调用machine driver对应的中断处理handler; b - ...
- 该如何有效的提高C/C++语言编程能力
很多答案都谈到算法的重要性,我的答案主要集中在C++上,只是一些个人经验. 其实我以前也有这样的困惑,感觉完了不知道怎么用.而且我也不是学计算机的,也没有从事相关工作,所以大概有十年的时间都没写什么程 ...
- 神经网络 感知机 Perceptron python实现
import numpy as np import matplotlib.pyplot as plt import math def create_data(w1=3,w2=-7,b=4,seed=1 ...
- hdu 2200 Eddy's AC难题(简单数学。。)
题意: N个人,每个人AC的题数都不一样. Eddy想从中选出一部分人(或者全部)分成两组.必须满足第一组中的最小AC数大于第二组中的最大AC数. 问共有多少种不同的选择方案. 思路: 简单数学.. ...
- JMeter学习记录收藏
1.如何进行一个简单的性能测试 2.JMeter各种功能名词解释,比较全 3.聚合报告分析 4.CSV文件参数化,名词解释 5.JMeter快捷键
- PyCharm Django Python 开发环境配置 详细教程
PyCharm Django Python 开发环境配置 详细教程 1. Python 下载及安装 (1)根据需要的版本去 Python 官网(https://www.python.org/downl ...
- Java测试开发--sts安装Lombok(七)
1.sts安装Lombok的步骤: 下载最新的lombok.jar包,进入cmd窗口,切到Lombok下载的目录,运行命令: java -jar lombok.jar,会出现如下界面: 已经默认选好了 ...
- mysql8版本以上重置密码
1.打开命令窗口cmd,输入命令:net stop mysql,停止MySQL服务, 2.开启跳过密码验证登录的MySQL服务, 输入命令 : mysqld --console --skip-gran ...