广告
返回顶部
首页 > 资讯 > 操作系统 >如何在Linux中比较两个目录的不同
  • 373
分享到

如何在Linux中比较两个目录的不同

2023-06-09 14:06:03 373人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关如何在linux中比较两个目录的不同,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。目录结构。[root@node1 ~]# tree 

这篇文章将为大家详细讲解有关如何在linux中比较两个目录的不同,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

目录结构。

[root@node1 ~]# tree directory1 directory2directory1├── 1.png├── 2.png└── 3.pngdirectory2├── 2.png├── 3.png└── 4.png

1.命令行输出的结果

方法一:使用diff

diff -r directory1 directory2

但是diff会对每个文件中的每一行都做比较,所以文件较多或者文件较大的时候会非常慢。请谨慎使用。

方法二:使用diff结合tree

diff <(tree -Ci --noreport /mnt/f/自然马) <(tree -Ci --noreport /mnt/i/自然马)< /mnt/f/自然马---> /mnt/i/自然马87a88> xyz.avi488d488< rsync.txt534d533< 542D0.mp4

说明:

tree的-C选项是输出颜色,如果只是看一下目录的不同,可以使用该选项,但在结合其他命令使用的时候建议不要使用该选项,因为颜色也会转换为对应的编码而输出;

-i是不缩进,建议不要省略-i,否则diff的结果很难看,也不好继续后续的文件操作;

--noreport是不输出报告结果,建议不要省略该选项。

该方法效率很高。

方法三:find结合diff

find directory1 -printf "%P\n" | sort > file1find directory2 -printf "%P\n" | sort | diff file1 -2d1< 1.png4a4> 4.png

说明:

<代表的行是directory1中有而directory2没有的文件,>则相反,是directory2中有而directory1中没有。

不要省略-printf "%P\n",此处的%P表示find的结果中去掉前缀路径,详细内容man find。例如,find /root/ -printf "%P\n"的结果中将显示/root/a/xyz.txt中去掉/root/后的结果:a/xyz.txt。

效率很高,输出也简洁。

如果不想使用-printf,那么先进入各目录再find也行。

[root@node1 ~]# (cd /root/a;find . | sort >/tmp/file1)    [root@node1 ~]# (cd /root/b;find . | sort | diff /tmp/file1 -)2d1< ./1.png4a4> ./4.png

上面将命令放进括号中执行是为了在子shell中切换目录,不用影响当前所在目录。

方法四:使用rsync

rsync -rvn --delete directory1/ directory2 | sed -n '2,/^$/{/^$/!p}'deleting a/xyz.avirsync.txt

新建文件夹/542D0.mp4

其中deleting所在的行就是directory2中多出的文件。其他的都是directory中多出的文件。

如果想区分出不同的是目录还是文件。可以加上"-i"选项。

rsync -rvn -i --delete directory1/ directory2 | sed -n '2,/^$/{/^$/!p}'*deleting  a/xyz.avi>f+++++++++ rsync.txt>f+++++++++ 新建文件夹/542D0.mp4

其中>f+++++++++中的f代表的是文件,d代表的目录。

上面的rsync比较目录有几点要说明:

一定不能缺少-n选项,它表示dry run,也就是试着进行rsync同步,但不会真的同步。

第一个目录(directory1/)后一定不能缺少斜线,否则表示将directory1整个目录同步到directory2目录下。

其它选项,如"-r -v --delete"也都不能缺少,它们的意义想必都知道。

sed的作用是过滤掉和文件不相关的内容。

以上rsync假定了比较的两个目录中只有普通文件和目录,没有软链接、块设备等特殊文件。如果有,请考虑加上对应的选项或

者使用-a替代-r,否则结果中将出现skipping non-regular file的提示。但请注意,如果有软链接,且加了对应选项(-l或-a或其他

相关选项),则可能会出现fileA-->fileB的输出。

效率很高,因为rsync的原因,筛选的可定制性也非常强。

2.图形化的比较结果

方法一:使用vimdiff

vimdiff <(cd directory1; find . | sort) <(cd directory2; find . | sort)# 或者vimdiff <(find directory1 -printf "%P\n"| sort) <(find directory2 -printf "%P\n"| sort)

方法二:使用meld

meld是python写的一个图形化文件/目录比较工具,所以必须先安装图形界面或设置好图形界面接受协议。它的功能非常丰富,和win下的beyond compare有异曲同工之妙。

meld具体的使用方式就不介绍了。

什么是Linux系统

Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统,使用Linux能运行主要的Unix工具软件、应用程序和网络协议。

关于如何在Linux中比较两个目录的不同就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何在Linux中比较两个目录的不同

本文链接: https://www.lsjlt.com/news/256383.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在Linux中比较两个目录的不同
    这篇文章将为大家详细讲解有关如何在Linux中比较两个目录的不同,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。目录结构。[root@node1 ~]# tree ...
    99+
    2023-06-09
  • Linux下快速比较两个目录的不同(多种方法)
    曾多次想要在linux下比较目录a和目录b中文件列表的差别,然后对目录a比目录b中多出的文件、少掉的文件分别做处理。但是,在网上搜索了多次也都没找到能直接处理好的工具。 所以想了很多不少方法,自我感觉都不错,而且网上似...
    99+
    2022-06-04
    linux 比较两个目录不同 linux下比较两个目录
  • 怎么在linux 中比较两个文件夹不同
    怎么在linux 中比较两个文件夹不同?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。比较文件夹diff,可以直接使用diff命令[root@~]# diff -...
    99+
    2023-06-09
  • linux如何快速找出两个目录的不同
    这篇文章给大家分享的是有关linux如何快速找出两个目录的不同的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。快速找出两个目录的不同diff命令会按行比较文件。但是它也可以比较两个目录:ls -l&nbs...
    99+
    2023-06-27
  • PHP如何比较两个数组找出不同值
    在PHP中,常常需要对数组进行比较操作,特别是对两个数组的差异性进行分析、比对等。本文将介绍如何用PHP实现两个数组的比对,并找出它们的不同值。一、两个数组的初始化假设需要比对的是两个数组 $arr1 和 $arr2 。我们先通过以下方法进...
    99+
    2023-05-14
  • 在python中如何比较两个float
    前几天跟同事聊起来,在计算机内部float比较是很坑爹的事情。比方说,0.1+0.2得到的结果竟然不是0.3 >>> 0.1+0.2 0.30000000000000004 这篇文章做了详细的解释,简单的来说就是计算...
    99+
    2023-01-31
    两个 python float
  • php如何比较两个数组获取不同部分
    这篇文章主要介绍了php如何比较两个数组获取不同部分,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php比较两个数组,获取不同部分的方法:1、使用array_diff()函数...
    99+
    2023-06-15
  • php如何比较两个数组并返回不同元素
    这篇文章主要介绍了php如何比较两个数组并返回不同元素的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何比较两个数组并返回不同元素文章都会有所收获,下面我们一起来看看吧。比较方法:1、用“array_di...
    99+
    2023-06-30
  • 在Java中如何比较两个对象浅析
    Common Lang 中的 Builder 包内提供了一个 DiffBuilder 类,可以比较两个对象,并返回不同的部分。 首先在要比较对象的类中实现 Diffable...
    99+
    2022-11-12
  • 我们如何比较两个 MySQL 表中的数据?
    有时我们需要找出两个表中不匹配的数据,尤其是在数据迁移的情况下。可以通过比较表格来完成。考虑下面的示例,其中我们有两个名为“students”和“student1”的表。mysql> Select * from studen...
    99+
    2023-10-22
  • 如何在GitLab上同步两个不同的分支
    GitLab是一款源代码管理平台,它提供了许多工具来帮助程序员管理其源代码。在协作开发中经常会涉及到分支操作,分支可以将不同的代码分离开来进行开发和测试,但可能出现分支之间不同步的问题。下面我们就来讨论一下如何在GitLab上同步两个不同的...
    99+
    2023-10-22
  • Java如何比较两个对象并获取不相等的字段详解
    目录 写在前面缘起实现使用方法扩展后记附:JAVA判断(获取)两个相同对象不同的数据 写在前面 在工作中,我们经常会遇到这样的需求——比较两个对象是否相等,如果不相等的话,取出不相等...
    99+
    2022-11-12
  • java中如何实现比较两个list的值是否一致
    java中如何实现比较两个list的值是否一致?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java list 比较详解及实例java里比较两个list的值是否一致,不考虑顺序...
    99+
    2023-05-31
    java list 的值
  • 在Linux系统中怎么将tar文件解压到不同的目录中
    本篇内容主要讲解“在Linux系统中怎么将tar文件解压到不同的目录中”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在Linux系统中怎么将tar文件解压到不同的目录中”吧!你不必使用cd命令切...
    99+
    2023-06-13
  • 如何使用Rsync命令同步两个Samba4 AD DC之间的SysVol目录
    小编给大家分享一下如何使用Rsync命令同步两个Samba4 AD DC之间的SysVol目录,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!需求:在 Ubuntu...
    99+
    2023-06-16
  • 详解PHP如何在两个大文件中找出相同记录
    目录1、引言2、思路3、实操4、生成测试文件5、分割文件6、查找重复记录7、完整代码1、引言 给定a,b两个文件, 分别有x,y行数据, 其中(x, y均大于10亿), 机器内存限制...
    99+
    2022-11-13
  • PHP7中的空格船操作符:如何比较两个表达式的大小?
    PHP7中的空格船操作符:如何比较两个表达式的大小?在PHP7中,引入了一个新的操作符,称为空格船(Spaceship)操作符(96b4fef55684b9312718d5de63fb7121)。这个操作符用于比较两个表达式的大小,并返回适...
    99+
    2023-10-26
    PHP 空格船操作符 表达式的大小
  • php如何获取两个数组中不同元素的个数
    本文小编为大家详细介绍“php如何获取两个数组中不同元素的个数”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何获取两个数组中不同元素的个数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。获取步骤:1、利用...
    99+
    2023-07-02
  • js如何找出两个数组中不同的元素
    目录js找出两个数组中不同的元素js找出两个数组中不同元素和相同元素的几种方法找出不同元素找出相同的元素总结js找出两个数组中不同的元素 function getNewArr(a,b...
    99+
    2022-12-09
    js数组元素 js数组不同元素 找两个数组不同元素
  • js中如何从输入框读取内容比较两个数字的大小
    小编给大家分享一下js中如何从输入框读取内容比较两个数字的大小,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!因为从输入框读取的内...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作