文件目录比较工具?

Dev*_*ris 154 software-recommendation diff

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

它主要用于源代码控制,但我也需要将其用于部署。

dv3*_*0ea 177

融合安装融合

Meld 是一个可以比较和合并文件和目录的工具。它是标准的 GUI 模拟diff 安装diffutilspatch 安装补丁命令行工具。(有关这些的更多详细信息,请参阅man diffman patch

在此处输入图片说明

此外,许多源代码控制系统(例如 bzr 安装 bzr-gtk 或者 git 安装 git) 能够在版本之间创建差异。

  • 刚刚尝试了一个更大的文件夹 - 4 GB,2000 个文件。融合的功能是需要的。但是对于这个文件夹,meld 非常慢,而且 UI 没有响应(块)。现在使用 rsync。 (12认同)
  • 梅尔德是惊人的。我用它作为我的源代码控制差异。 (2认同)

Ric*_*chm 46

Diff 是你的朋友。

diff -ur path1 path2
Run Code Online (Sandbox Code Playgroud)

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

如果您更改-ur-urNthen 这也将显示仅存在于其中一个路径中的文件的内容。

  • 安装了 `colordiff` 并使用了 `colordiff -ur path1 path2` (2认同)

ane*_*hep 23

'Beyond Compare' 也适用于 Linux。检查他们的下载 URL
他们的德国网站位于http://www.beyondcompare.de/


Gil*_*il' 13

使用diff命令:

diff -u file1 file2
Run Code Online (Sandbox Code Playgroud)

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

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

diff -u file1 file2 >file1-file2.diff
Run Code Online (Sandbox Code Playgroud)


Huy*_*ens 12

侏儒指挥官安装侏儒指挥官

界面可能不是真正的性感,但它非常强大!

替代文字

如果您习惯了其他 *Commander(如 Norton 等),您就不会迷失方向。


lum*_*ric 11

命令行工具

受此博客条目的启发。

差异

列出不同的文件:

diff -qr folder1 folder2
Run Code Online (Sandbox Code Playgroud)

上市还有内容:

diff -Naur folder1 folder2
Run Code Online (Sandbox Code Playgroud)

同步

如果两个目录不在同一台机器上,rsync可能是最简单的解决方案。通常rsync用于同步目录,但您可以在详细和干燥模式下运行它,因此它只会列出它必须更改的文件。

rsync -rvnc --delete folder1 server:/path/to/folder2
Run Code Online (Sandbox Code Playgroud)

c如果要根据时间戳和文件大小比较文件以加快所有操作,则可以省略:

rsync -rvn --delete folder1 server:/path/to/folder2
Run Code Online (Sandbox Code Playgroud)


tin*_*hed 9

KDiff3 安装 kdiff3

它是一个图形前端,用于为 KDE 用户(或者如果您不介意使用 Qt 应用程序)进行差异化。

kdiff3

还有dirdiff 安装目录 对于目录。


pie*_*dro 9

克鲁萨德安装克鲁萨德

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

克鲁萨德

要比较文件内容,您只需标记两个文件,选择“文件”>“比较内容”,然后逐个字母地比较它们。krusader 使用的默认比较工具是默认的 KDE 工具“ Kompare ”。您可以将 krusader 设置为使用任何其他比较工具 - 例如上述工具之一。

这是我找到的最完整的解决方案,非常方便。并且它支持午夜指挥官使用的所有功能键绑定(诺顿指挥官语法)。


sag*_*ise 6

也许Meld就是你要找的。或者这里有一些其他的选择。


gee*_*ekQ 5

两周前我了解了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
Run Code Online (Sandbox Code Playgroud)


小智 5

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

例子:

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

$find /dir1/ -type f -exec md5sum {} \; > dir1.txt
Run Code Online (Sandbox Code Playgroud)

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

$find /dir2/ -type f -exec md5sum {} \; > dir2.txt
Run Code Online (Sandbox Code Playgroud)

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

$diff dir1.txt dir2.txt
Run Code Online (Sandbox Code Playgroud)

当要比较的两个目录不在同一台机器上并且需要确保两个目录中的文件相同时,此策略非常有用。

完成这项工作的另一个好方法是使用git

git diff --no-index dir1/ dir2/
Run Code Online (Sandbox Code Playgroud)

此致!