Linux diff命令(比较两个文件或目录的内容差异)
文章目录
- Linux `diff` 命令详解教程
- 基本用法
- 比较文件
- 输出解释
- 递归比较(-r)
- 示例代码
- 控制输出格式
- 统一格式(-u)
- 上下文格式(-c)
- 高级选项
- 忽略所有空白差异(-w)
- 仅报告文件是否不同
Linux diff 命令详解教程
diff 是一个在 Unix 和 Linux 系统中广泛使用的命令行工具,用于比较两个文件或目录的内容差异。本文将深入探讨 diff 命令的各种用法,包括基本比较、递归比较、输出格式控制等高级功能。
基本用法
比较文件
diff 命令最基本的用法是比较两个文件,命令格式如下:
diff [options] file1 file2
示例代码,比较两个文本文件 text1.txt 和 text2.txt 的内容:
diff text1.txt text2.txt


如果没有任何输出,表明这两个文件在内容上是相同的。如果文件有差异,diff 会显示这些差异的具体行和内容。
输出解释
当发现两个文件不相同时,diff 输出的格式通常如下:
3c3
< one
---
> two
这表示 file1 的第三行是 “one”,而 file2 的第三行是 “two”。这里 < 符号表示第一个文件的内容,> 符号表示第二个文件的内容。
上面3c3是一种指示符,用于描述发生变化的行号和变化类型。这个特定的输出格式来自于传统的diff输出模式,这里是如何解释的:
3c3中的第一个数字3表示在第一个文件(通常是比较中的左侧文件)中涉及变更的起始行号。c是一个字母,表示变更的类型。在这里,c表示 “change”(更改)。diff使用不同的字母来表示不同类型的差异:c表示更改(change)。a表示添加(addition)。d表示删除(deletion)。
- 第二个
3表示在第二个文件(通常是比较中的右侧文件)中涉及变更的起始行号。
因此,3c3 告诉用户在两个文件的第三行发生了变化。
递归比较(-r)
当需要比较包含多个文件和目录的两个目录时,可以使用 -r 选项。这使 diff 能够递归地比较每个文件。
示例代码
比较两个目录 dir1 和 dir2:
diff -r dir1 dir2

这将输出这两个目录中所有不同的文件和子目录的差异。
控制输出格式
diff 命令提供多种输出格式,可以更清晰地理解文件之间的差异。
统一格式(-u)
使用 -u 选项可以生成易于理解和适合用于补丁的输出格式:
diff -u file1 file2

输出示例:
--- file1 2021-06-07 12:00:00.000000000 +0200
+++ file2 2021-06-07 12:01:00.000000000 +0200
@@ -1,5 +1,5 @@This is a file
-with
+asmallexampletext.
这里 @@ -1,5 +1,5 @@ 表明比较的是从第一行开始的共五行代码。- 表示 file1 的内容,+ 表示 file2 的内容。
上下文格式(-c)
上下文格式通过 -c 选项提供,它包含了更多周围的上下文信息,帮助理解变更的前后关系:
diff -c file1 file2
输出示例:
*** file1 2021-06-07 12:00:00.000000000 +0200
--- file2 2021-06-07 12:01:00.000000000 +0200
***************
*** 1,5 ****This is a file
- withasmallexample
--- 1,5 ----This is a file
+ asmallexample
高级选项
diff 还提供了一系列高级选项,用于忽略空白差异、只显示差异而不显示具体内容等。
忽略所有空白差异(-w)
使用 -w 选项可以忽略空格和制表符带来的差异:
diff -w file1 file2
仅报告文件是否不同
使用 -q 选项可以简洁地报告文件是否不同,而不显示具体差异:
diff -q dir1 dir2
输出示例:
plaintext
Files dir1/file1 and dir2/file1 differ
通过这些方法,可以有效地使用 diff 命令来识别和处理文件及目录间的差异,无论是进行代码审核、生成补丁文件还是简单的文件比较。
相关文章:
Linux diff命令(比较两个文件或目录的内容差异)
文章目录 Linux diff 命令详解教程基本用法比较文件输出解释 递归比较(-r)示例代码 控制输出格式统一格式(-u)上下文格式(-c) 高级选项忽略所有空白差异(-w)仅报告文件是否不同 Linu…...
从传统到现代:水表的远程抄表革命
1.引言:技术驱动的转型 在过去的几十年里,我们的生活方式被科技的快速发展深深影响,其中就包括了公用设施的管理方式。传统水表的远程抄表系统就是这样一个例子,它将老旧的手动抄表模式转变为高效、精确的自动化系统。 2.传统水…...
视频怎么打水印?6个软件教你快速进行视频水印制作
视频怎么打水印?6个软件教你快速进行视频水印制作 添加水印是保护视频版权、提升视频专业性的重要手段之一。以下是六款软件,它们能够帮助你快速进行视频水印制作,让你的视频更具个性和专业性: 1.迅捷视频剪辑软件:…...
面试 Java 基础八股文十问十答第二十八期
面试 Java 基础八股文十问十答第二十八期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)动态代理是什么&am…...
Excel-VBA报错01-解决方法
【已删除的部件:部件/xl/vbaProject.bin。(Visual Basic for Applications(VBA))】 1.问题复现: Win10 ;64位 ;Office Excel 2016 打开带有宏的Excel文件,报错:【已删除的部件:部件/xl/vbaProject.bin。…...
php利用阿里云短信SDK实现短信发送功能
当使用PHP结合阿里云短信服务SDK来实现短信验证码登录时,你需要遵循以下步骤: 1. 注册阿里云账号并开通短信服务 首先,你需要有一个阿里云账号,并在阿里云控制台中开通短信服务(Dysmsapi)。 2. 获取Acce…...
承装(修、试)电力工程施工许可证四级资质可以承接多大的项目?
承装(修、试)电力工程施工许可证四级资质可以承接多大的项目? 承装(修、试)电力工程施工许可证四级资质可以承接的项目规模及范围是一个复杂且细致的问题,涉及电力工程施工的多个方面。根据四级资质的相关规…...
影像图层调整图像显示效果的色彩参数汇总
在Cesium的ImageryProvider中,以下图层对象支持调整图像显示效果的色彩参数: - ArcGisMapServerImageryProvider - BingMapsImageryProvider - GoogleEarthEnterpriseImageryProvider(如果服务支持) - TileMapServiceImager…...
EasyHPC - PyTorch入门教程【笔记】
内容来源:超算习堂 (easyhpc.net) 文章目录 01 Tensors环境要求1.1 Tensors1.1.1 直接创建tensor1.1.2 在现有tensor中创建tensor1.1.3 从NumPy中创建tensor 1.2 基本运算1.2.1 使用运算符1.2.2 调用方法 1.3 CUDA Tensors 02 Autograd2.1 Tensor2.2 Gradient 03 Ne…...
Node.js里面 Path 模块的介绍和使用
Node.js path 模块提供了一些用于处理文件路径的小工具,我们可以通过以下方式引入该模块: var path require("path") 方法描述 序号方法 & 描述1path.normalize(p) 规范化路径,注意.. 和 .。2path.join([path1][, path2][,…...
【Linux】Centos7配置JDK
1.启动虚拟机、Xshell、Xftp 2.在Xshell中新建一个会话,用于连接到虚拟机中 3.因为虚拟机里自带有JDK,所以需要先卸载自带的JDK 3.1.查询已安装的 jdk 列表 rpm -qa | grep jdk3.2.将查询到的全部删除 yum -y remove XXX(上面查询到的 j…...
pytorch中统计一个数在tensor中出现了几次
pytorch中统计一个数在tensor中出现了几次 在PyTorch中,可以使用torch.eq()函数配合torch.sum()来统计某个数值在Tensor中出现的次数。torch.eq()函数会返回一个新的Tensor,其中对于每个元素来说,如果和指定的数值相等,则该位置为…...
a-auto-complete 请求后端数据做模糊查询,解决下拉框选择选不上,不回显的问题
a-auto-complete 请求后端数据做模糊查询,解决下拉框选择选不上,不回显的问题 记录一个a-auto-complete卡bug卡了两天,找不到哪里的问题下拉框选择选不上,不回显,最后终于解决了。 我还对下拉框显示的内容做了小调整。…...
Leetcode—724. 寻找数组的中心下标【简单】
2024每日刷题(129) Leetcode—724. 寻找数组的中心下标 实现代码 class Solution { public:int pivotIndex(vector<int>& nums) {int sum accumulate(nums.begin(), nums.end(), 0);int prefix 0;for(int i 0; i < nums.size(); i) {i…...
C语言 | Leetcode C语言题解之第72题编辑距离
题目: 题解: static inline int Min(const int a, const int b, const int c) {int min (a < b) ? a : b;return (min < c) ? min : c; }int minDistance(char * word1, char * word2){int m strlen(word1), n strlen(word2);int dp[m 1][n…...
AI视频教程下载:零代码创建AI智能体、AI Agents和ChatGPT的Gpts
这门课程专注于提示工程的掌握,教你以精确的方式引导GPT,利用它们的生成能力产生卓越的AI驱动结果。一步一步地,你将学会创建多样化的GPT军团——每个都设计来满足特定的专业需求。 从提供个性化职业变更指导的职业教练AI,到以惊…...
汽车之家,如何在“以旧换新”浪潮中大展拳脚?
北京车展刚刚落幕,两重利好正主导汽车市场持续升温:新能源渗透率首破50%,以及以旧换新详细政策进入落地期。 图源:中国政府网 在政策的有力指引下,汽车产业链的各个环节正经历着一场深刻的“连锁反应”。在以旧换新的…...
图神经网络(GNNs)在时间序列分析中的应用
时间序列数据是记录动态系统测量的主要数据类型,由物理传感器和在线过程(虚拟传感器)大量生成。时间序列分析对于解锁可用数据中隐含的丰富信息至关重要。随着图神经网络(GNNs)的最近进展,基于GNN的方法在时…...
Qt QShortcut快捷键类详解
1.简介 QShortcut是一个方便的工具类,用于在应用程序中创建快捷键。通过设置快捷键和关联的处理函数,可以实现快速执行某个操作的功能。 // 创建一个快捷键,关联到MyWidget类的keyPressEvent()函数 QShortcut *shortcut new QShortcut(QKe…...
003 redis分布式锁 jedis分布式锁 Redisson分布式锁 分段锁
文章目录 Redis分布式锁原理1.使用set的命令时,同时设置过期时间2.使用lua脚本,将加锁的命令放在lua脚本中原子性的执行 Jedis分布式锁实现pom.xmlRedisCommandLock.javaRedisCommandLockTest.java 锁过期问题1乐观锁方式,增加版本号(增加版本…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
