我正在寻找可以比较目录和文件的东西,就像Beyond Compare在Windows中所做的那样。

主要用于源代码控制,但我也需要使用它进行部署。

评论

您只需要文件列表还是每个文件的实际内容?

我想要文件列表,并且如果可能的话,希望具有相同路径的文件之间的内容不同。

如果GUI工具允许隐藏相同的文件夹和文件,将非常方便。这将使集中精力放在奇数文件夹和文件上变得容易得多。有谁知道支持此功能的工具?

看看统一。 “超越比较”采用“一站式服务”,而“统一”则着重于处理树遍历,保持状态和传播更改,并通过将diff,3向合并等内容委派给您,从而覆盖“超越比较”功能。在文件级别工作的收藏程序。 Unison是免费的,非常强大且成熟的软件,可以通过不同操作系统之间的网络等快速检测和同步大树。首先阅读文档,尤其是在Windows上。

emacs有一个目录比较工具。像所有emacs一样,好吃的东西是“好吃的东西甚至意味着什么?”,但是它显示了按键的上下文帮助,允许通过几次击键进行递归分析,隐藏相同的文件甚至子目录,以交互方式选择文件以显示颜色各种选项的编码差异,以交互式方式合并,传播或对文件进行任意编辑,并使用所有常用的编辑功能轻松地转到下一个文件或目录,跟踪状态。

#1 楼


产生

产生是可以比较和合并文件和目录的工具。它是标准diff,和patch,命令行工具的GUI模拟。 (有关详细信息,请参阅man diff和man补丁)。

此外,许多源代码控制系统(例如bzrgit )都能够在版本之间创建差异。 >

评论


熔是惊人的。我将其用作源代码控制差异。

–马特细木工
2010年11月11日,0:30

刚刚尝试在一个较大的文件夹中-4 GB,2000个文件。融合的功能是所需的。但是对于此文件夹,融合非常慢,并且UI无响应(阻止)。现在使用rsync。

–geekQ
13年5月7日在9:33



在并排比较文本文件甚至复制粘贴内容时也非常有用。我见过的最好的界面!

– Stefan Rogin
2014年8月23日12:30



@geekQ是一种快速的替代方法,能够立即处理您想要的文件夹,请参阅下面的“比较”。优于融合恕我直言

– phil294
16-11-27在18:24

每当我想选择一个文件夹时Meld都会崩溃:/我的发行版本存储库中有最新版本(Ubuntu 14.04)

–Youda008
17年4月13日14:49



#2 楼

Diff是您的朋友。

diff -ur path1 path2


这将比较path1和path2之间所有公用的文件。

如果将-ur更改为-urN,则还会显示仅在其中一个路径中存在的文件的内容。

评论


安装了colordiff并使用了colordiff -ur path1 path2

– warvariuc
2014年11月6日在6:44

在cygwin中不起作用。

–TomášZato-恢复莫妮卡
16-10-16在18:47

#3 楼

“超越比较”也可用于Linux。检查其下载URL。
其德语站点位于http://www.beyondcompare.de/。

评论


在对远程主机执行ssh(使用密钥或密码)并将其与本地副本进行比较时,“超越比较”特别有用。

–brianlmerritt
16-10-5在10:43

#4 楼

使用diff命令:

diff -u file1 file2


diff -u选择带有几行上下文的格式。普通diff file1 file2仅列出不同的行。还有更多选项可用于控制输出格式,忽略仅空白的差异等。

如果要将输出写入文件,请重定向它:

diff -u file1 file2 >file1-file2.diff


#5 楼

Gnome Commander

该界面可能并不真正性感,但是它非常强大! (例如Norton等),您不会迷路。

评论


我没有用它来比较2个文件,但是我用它来告诉我与目录比较时哪些文件不同。这在整理照片时特别有用;-)

–惠更斯
2010-11-10 19:23

#6 楼

命令行工具

受本博客文章的启发。

diff

列出不同文件:

diff -qr folder1 folder2


还列出内容:

diff -Naur folder1 folder2


rsync

如果两个目录不在同一台计算机上,则rsync可能是最简单的解决方案。通常使用rsync来同步目录,但是您可以在冗长而干燥的模式下运行它,因此它将仅列出需要更改的文件。

rsync -rvnc --delete folder1 server:/path/to/folder2


如果要基于时间戳和文件大小比较文件以加速所有操作,则可以省略c

rsync -rvn --delete folder1 server:/path/to/folder2


#7 楼


Krusader

Krusader是一个免费工具(可在Software Center中获得),它可以比较显示文件夹内容,并且您可以与许多其他选项进行同步。您可以在同步和比较时进行过滤。

要比较文件内容,只需标记两个文件,然后选择“文件”>“比较内容”,然后逐个字母地进行比较。 krusader使用的默认比较工具是默认的KDE工具“ Kompare”。您可以将krusader设置为使用任何其他比较工具-例如上面的一种。
这是我找到的最完整的解决方案,非常方便。
它支持所有使用的功能keybindungs午夜指挥官(诺顿指挥官语法)。

评论


您还可以使用“工具->同步目录”来获取两个目录面板的递归文件更改视图。

–安吉洛斯·皮库拉斯(Angelos Pikoulas)
2014年2月20日在10:56



不幸的是,krusader中的同步器无法维护:bugs.kde.org/show_bug.cgi?id=270150#c7。是否有积极维护的替代方案?

–rubo77
2014年2月24日在9:38

@ rubo77:此错误已得到修复。

– mivk
18年8月28日在17:07

#8 楼


KDiff3

它是KDE用户(或如果您不介意使用Qt应用程序)进行比较的图形化前端。

有也是目录的dirdiff 。

#9 楼

也许Meld是您要寻找的东西。
或者这里还有其他选择。

#10 楼

我两周前了解了hashdeep。它具有一些强大的优势:


meld相比,它非常适合大型文件夹。在meld变得非常慢且UI无响应(被阻塞)的情况下,hashdeep只能以恒定的速度工作。
rsync相比,hashdeep可以检测到移动的文件-具有相同内容的文件,位于不同的目录中。
详细的输出类似于:

...
foo/bar.txt: Known file not used
x/foo/M0824_2L.JPG: Moved from y/P1010998.JPG

hashdeep: Audit failed
   Input files examined: 0
  Known files expecting: 0
          Files matched: 6233
Files partially matched: 0
            Files moved: 3695
        New files found: 19257
  Known files not found: 4713


#11 楼

Unison是一种快速的文件同步工具,它使用rsync算法,可让您在更新两个位置(无论是远程位置还是本地位置)之前预览差异。

#12 楼

进行比较的一种好方法是使用“ find”和“ md5sum”,然后使用“ diff”。

示例:

使用find列出其中的所有文件目录然后为每个文件计算md5哈希并将其通过管道传输到文件:

$find /dir1/ -type f -exec md5sum {} \; > dir1.txt


对另一个目录执行相同的过程:

$find /dir2/ -type f -exec md5sum {} \; > dir2.txt


然后将结果两个文件与“ diff”进行比较:

$diff dir1.txt dir2.txt


当要比较两个目录时,此策略非常有用不在同一台机器上,您需要确保两个目录中的文件都相等。 />
最好的问候!

#13 楼

也尝试FreeFileSync。它具有良好的界面,可接受的比较速度,对比较结果的良好过滤,不同的同步方式。它带有一个文件夹监视工具(RealTimeSync),当特定的一个或多个文件夹或其中的文件发生更改时,该工具可以启动FreeFileSync(实际上是任何命令或脚本)。真的很值得一试。

这里或这里有PPA的更多信息,也是如此。

在他们的页面上,主要功能是:


比较文件(按字节或按日期)并进行同步。

没有限制:可以同步任意数量的文件。

Unicode支持。

网络支持。

内置支持超长文件名(超过MAX_PATH = 260个字符)。

同步数据库,用于传播已删除的文件和冲突检测

支持具有不同配置的多个文件夹对

全面支持Windows / Linux符号链接和Windows连接点。

精益和易于访问的UI:针对速度和大量数据进行了高度优化。

完全用C ++编码的算法。

所有进度指示器均经过优化,以实现最佳性能!

/>创建批处理作业以自动同步wi无论是否具有GUI。

关注可用性:




UI上仅必要的功能:没有重载的菜单或图标丛林。

通过拖放选择所有文件夹。

自动保存上次使用的配置和屏幕设置。

通过拖放来维护和加载不同的配置。拖放,加载按钮或命令行。

双击以启动外部应用程序(例如,在Windows资源管理器中显示文件)

将所有网格数据复制并粘贴为文本

直接在主网格上删除多余的/临时文件。

右键单击上下文菜单。

全面的状态信息和错误报告

对文件列表进行排序按名称,大小或日期。





支持大于4 GB的文件大小。

将文件移动到回收站的选项而不是删除/覆盖它们。

使用默认筛选器忽略目录“ \ RECYCLER”和“ \ System Volume Information”。 (仅Windows)

本地化版本可用于多种语言。

复制前删除:避免大型同步作业的磁盘空间不足。

筛选功能可从同步中包括/排除文件(无需重新比较!)。

临时从同步中包括/排除特定文件。

自动处理夏时制更改在FAT / FAT32卷上。

提供便携式版本(可通过安装程序选择)。

本机64位版本。

从内部检查更新。 FreeFileSync自动。

使用Windows卷影复制服务复制锁定的文件。 (仅Windows)

在目录名称中使用宏%time%,%date%创建常规备份

同步时复制文件和文件夹的创建/访问/修改时间

先进的锁定策略,允许多个同步过程(例如,多个编写者,相同的网络共享)


我想添加它可以管理已删除的文件,将它们移至“已删除邮件”或“用户指定的文件夹。指出一个缺点:程序文档将重点放在Windows上,而在Linux上则较少。但它做得很好。

#14 楼

您可以使用diffuse(仅用于文件,不适用于目录):
sudo apt-get install diffuse
diffuse file1 file2


评论


我经常使用Diffuse的一项杀手级功能-手动设置合并锚点的功能。它还没有做目录(但是),但是对于单个和混乱的差异,anchors功能很棒。

–sk606
2013年12月10日在1:42

#15 楼

您可以尝试融合。

这是存储库,并提供用于文件或文件夹比较的GUI。

评论


Meld是Bdiff的GUI。

– Marco Ceppi♦
2011年10月4日在17:46

#16 楼

如果您只是进行比较,那么Eclipse IDE会显得有些笨重,但是它确实做得很好。您可以选择2个项目,路径或文件,并将它们相互比较,还可以与源代码控制服务器同步。

#17 楼

恕我直言,FreeFileSync非常好,比Meld更有用。它快速且稳定,可以进行可定制的同步,还可以将比较结果导出到csv文件中。

Lanchpad链接

#18 楼

跨平台,轻松,无忧且无需保存个人资料的功能使Jfilesync成为我的首选

#19 楼

比较文件

File_1.txt
Line1
Line2

File_2.txt
Line1
Line 2


您可以使用命令cmp

cmp -b "File_1.txt" "File_2.txt"


输出将是

a b differ: byte 11, line 2 is  62 2  40  


比较目录(您的需求):

您可以使用diff命令:

diff -r --brief dir1 dir2


man diff

  -r, --recursive
              recursively compare any subdirectories found

   -q, --brief
          report only when files differ