我有两个文件夹,理论上具有相同的文件夹结构和相同的文件。
我想检查两个文件夹中两个副本之间的差异。我可以diff folder1/file1 folder2/file1
一个一个运行,但这很耗时。
有没有办法确定两个文件夹中哪些文件不同?如果没有,至少有一种方法可以将文件夹的内容与第二个文件夹的内容进行比较?
我正在寻找一个可以比较两个 C++ 源代码并找到代码意义差异的应用程序(以比较可能以不同方式重新格式化的版本)。至少,能够忽略不影响源功能的空格、制表符和换行符的变化的东西(请注意,换行符是否被视为空格取决于语言,而 C 和 C++ 这样做)。并且,理想情况下,可以准确识别所有代码意义差异的东西。我在 Ubuntu 下。
按照diff --help | grep ignore
,我希望diff -bBwZ
能合理地完成这项工作(我预计会得到一些假阴性,稍后再处理)。然而,事实并非如此。
如果我有以下带有片段的文件
test_diff1.txt
else if (prop == "P1") { return 0; }
Run Code Online (Sandbox Code Playgroud)
和 test_diff2.txt
else if (prop == "P1") {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后
$ diff -bBwZ test_diff1.txt test_diff2.txt
1c1,3
< else if (prop == "P1") { return 0; }
---
> else if (prop == "P1") {
> return 0;
> }
Run Code Online (Sandbox Code Playgroud)
而不是空结果。
使用代码格式化程序作为两个输入的“过滤器”可能会过滤掉这些差异,但结果输出必须与原始输入联系起来,以便最终报告差异以保留实际的文本和行号。因此,无需正确编译器即可实现目标......不过,我不知道是否有可用的东西。
可以达到目标diff
吗? …
我已经可以使用相同版本的 debs 和 deb-src 包创建重复的存储库。
问题是我想从 Debian 主线(而不是原始来源)中找到 Ubuntu 的更改。这样我就可以将 Debian 主线与 Ubuntu 提供的一些自定义一起使用(Ubuntu 做了很多很好的事情,但我认为它过于简化了一些事情......一个简单的例子是即将到来的统一迁移)。
我认为可能已经有一个工具可以做到这一点,但我找不到它。我可以编写它,但我不想这样做。
我不是一个 unix 人,所以我会继续问:
我有以下问题 - 两个文件夹有很多子文件夹。我需要区分它们。
我试过这个:
diff -drupN vanila_kernel_3.0.8 my_kernel_3.0.8 > kernel.patch
Run Code Online (Sandbox Code Playgroud)
这导致了一个 85mb 的文件......并不是我想要的。
我希望 diff 的结果是许多较小的补丁,理想情况下,每个包含更改内容的已更改文件都有一个补丁。这意味着我没有改变我使用 diff 的方式,我需要把它放在某种循环中......所以我尝试运行这个小脚本
for file in original_308/*.*; do
diff -dupN "$file" "my_308/${file##*/}" > "$file".patch
done
Run Code Online (Sandbox Code Playgroud)
但它不起作用:/
理想情况下,我希望每个更改都有一个 .patch 文件,但是为原始更改的文件提供补丁就可以了(因为我可以过滤新添加的文件并复制它们)
有人可以为我提供一个体面的方法来做到这一点吗?
编辑:
这是 choroba 要求我发布的内容
diff -Naur -x '*.o' -x '*.cmd' -x '*.d' original_308/arch/arm/boot/compressed/head.S my_308/arch/arm/boot/compressed/head.S
--- original_308/arch/arm/boot/compressed/head.S 2011-10-25 07:11:12.000000000 +0200
+++ my_308/arch/arm/boot/compressed/head.S 2012-07-04 03:57:25.000000000 +0200
@@ -656,6 +656,8 @@
@ b __arm6_mmu_cache_off
@ b __armv3_mmu_cache_flush
Run Code Online (Sandbox Code Playgroud)
所以是的,即使 gedit/geany 无法打开它,它也是正确的输出。UltraEdit 确实...
我通常在远程系统上处理其他人的代码,并且经常需要合并来自两个不同文件的代码。为此,我必须将文件拉入我的系统并将其合并并将其推回远程系统。有没有更好的方法通过终端本身来做到这一点?(即终端和命令行等价于Meld Diff Viewer)?
我似乎没有找到解决方法。是否有一个单线只能获得diff --side-by-side
输出的右侧?
例如:
为此:diff --side-by-side file1 file2
我得到这两种类型的结果之一:
2 Africa | 3 Africa
3 America 3 America
3 Asia 3 Asia
4 Antarctica 4 Antarctica
4 Oceania 4 Oceania
7 Europe 7 Europe
Run Code Online (Sandbox Code Playgroud)
或者
3 Africa 3 Africa
3 America 3 America
3 Asia <
4 Antarctica 4 Antarctica
> 4 Asia
4 Oceania 4 Oceania
8 Europe 8 Europe
Run Code Online (Sandbox Code Playgroud)
我怎样才能把它们变成这个:
| 3 Africa
3 America
3 Asia
4 Antarctica
4 Oceania
7 Europe
Run Code Online (Sandbox Code Playgroud)
这分别是:
3 Africa …
Run Code Online (Sandbox Code Playgroud) 我见过很多使用 diff 命令的例子,但没有一个详细说明它的基本用法。这是我想使用的两个文件的内容:
cat -A file1.txt
a$
b$
c$
d$
cat -A file2.txt
b$
c$
d$
e$
Run Code Online (Sandbox Code Playgroud)
如果我像这样使用 diff 命令:
diff file1.txt file2.txt
Run Code Online (Sandbox Code Playgroud)
我得到:
1d0
< a
4a4
> e
Run Code Online (Sandbox Code Playgroud)
我想知道的是,除了小于号和大于号之外,1d0 中的第 1 行和 0 行以及 4a4 中的第 4 行和第 4 行是什么意思。更一般地说,为什么在 a 之前有一个小于号而不是大于号?有什么不同?
无线 USB 加密狗 - 蓝牙 USB 加密狗 - MINI 5.0 - 版本 5.48 - 0a12:0001
所以最近我买了一个蓝牙 USB 加密狗 - 型号:MLT-5.0-MiNi
我正在使用 Ubuntu 20.04.1 LTS。
1.将适配器连接到USB端口后,我检查了在终端中输入的端口lsusb
,得到以下信息:
Bus 002 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Run Code Online (Sandbox Code Playgroud)
2. hciconfig -a
给出了以下内容:
hci0: Type: Primary Bus: USB
BD Address: 00:1A:7D:DA:71:11 ACL MTU: 679:9 SCO MTU: 48:16
DOWN
RX bytes:574 acl:0 sco:0 events:30 errors:0
TX bytes:368 acl:0 sco:0 commands:30 errors:0
Features: 0xff 0xff 0x87 0xfa 0xdb 0xbf …
Run Code Online (Sandbox Code Playgroud) 有2个文件,几乎相似。例如,一个文件中只有 2 行与另一个文件的内容不匹配。有没有办法在这两个文件之间进行比较,并将差异写入另一个文件?
我有两个文件,其中包含来自两个硬盘驱动器的所有文件路径列表(应该完全相同),我认为其中一个文件丢失了。两个列表都有文件路径和大小,但列表的顺序不同(请参见下面的示例)。
有没有一个命令可以比较两个文件之间的差异并将差异输出到一个新文件?
例子:
文件 1:
/docs/red
/docs/blue
/docs/yellow
/docs/green
Run Code Online (Sandbox Code Playgroud)
文件_2:
/docs/blue
/docs/green
/docs/red
Run Code Online (Sandbox Code Playgroud)
差异_文件:
/docs/yellow
Run Code Online (Sandbox Code Playgroud) diff ×10
command-line ×5
bash ×1
batch ×1
bluetooth ×1
debian ×1
drivers ×1
git ×1
kernel ×1
patch ×1
scripts ×1
source-code ×1
text-editor ×1
vim ×1