文件/目录对比: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:显示指定目录下所有子目录与文件,包 ...
随机推荐
- Beta阶段第六次会议
第六次会议 时间:2020.5.22 完成工作 姓名 任务 难度 完成度 xyq 1.编写技术博客 中 90% ltx 1.编写小程序2.添加全局变量之后页面无法加载的bug 中 90% lm(迟到) ...
- Zabbix 5.0:监控阿里云RDS
Blog:博客园 个人 由于近期压测,需要频繁登录阿里云查看RDS监控,每次登录查看监控步骤较为繁琐,故将监控接入到zabbix. 概述 由于阿里云已做了RDS的监控,我们只需要通过阿里云SDK把这些 ...
- Noip模拟45 2021.8.21
一定别删大括号,检查是;还是, ceil函数里面要写double,否则根本没用!!!!!!! T1 打表 正解:打表 考场上很难真正把柿子理解着推出来 况且想要理解题意就很难,比如我就理解错了 半猜着 ...
- gdal3.1.0+VS2017+geos+kml编译总结
1.简介 gdal3.1.0编译过程中必须依赖proj,编译gdal必须要编译proj,proj的编译需要sqlite3,因此想要编译gdal3.1.0需要先编译proj和sqlite3 2.关于sq ...
- 硬件工程师必须掌握的PCB叠层设计内容
总的来说叠层设计主要要遵从两个规矩: 1. 每个走线层都必须有一个邻近的参考层(电源或地层); 2. 邻近的主电源层和地层要保持最小间距,以提供较大的耦合电容; 下面列出从两层板到八层板的叠层来进行示 ...
- Go并发编程--Mutex/RWMutex
目录 一.前言 二. Mutex 2.1 案例 三. 实现原理 3.1 锁的实现模式 3.2 Go Mutex 实现原理 3.2.1 加锁 3.2.2 解锁 四. 源码分析 4.1 Mutex基本结构 ...
- x64 InlineHook 黑魔法
目录 x64 InlineHook 黑魔法 为什么不能用X86 的HOOK方式? 原理:jmp + rip 进行寻址6字节方式跳转 手动InlineHook 临时地址x(找一块空内存) 计算偏移 源地 ...
- js点击事件 登录
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 【linux命令】 磁盘管理
du du是查看硬盘的使用情况,统计文件或目录的空间大小. -a 显示所有目录或文件的大小 -b 以byte为单位,显示目录或文件的大小 -c 显示目录或文件的总和 -k 以KB为单位输出 -m 以M ...
- anaconda无法launch应用(无法l打开任何应用)的问题解决 (点击应用无反应)
遇到了anaconda 无法launch 任何应用. 重装也不行. 先说我最终的解决方法(在官方文档中找到): 1. 启动 anaconda prompt , 输入 conda remove anac ...