Dev*_*ris 154 software-recommendation diff
我正在寻找可以比较目录和文件的东西,就像 Beyond Compare 为 Windows 所做的那样。
它主要用于源代码控制,但我也需要将其用于部署。
Ric*_*chm 46
Diff 是你的朋友。
diff -ur path1 path2
Run Code Online (Sandbox Code Playgroud)
这将比较 path1 和 path2 之间通用的所有文件。
如果您更改-ur
为-urN
then 这也将显示仅存在于其中一个路径中的文件的内容。
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)
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)
两周前我了解了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)
此致!