因此,实用程序Diff的工作方式与我想要的2个文件一样,但是我有一个项目需要一次与两个以上的文件进行比较,一次最多可以进行10个文件的比较。这要求所有这些文件也彼此并排。我的研究并没有真正发现任何东西,vimdiff似乎是迄今为止最好的一次,可以一次比较4个。
我的问题:是否有任何实用程序可以一次比较两个以上的文件,或者可以通过一种方法来比较diff / vimdiff以便进行多个比较?我要比较的文件相对较短,因此应该不会太慢。
提前致谢!
因此,实用程序Diff的工作方式与我想要的2个文件一样,但是我有一个项目需要一次与两个以上的文件进行比较,一次最多可以进行10个文件的比较。这要求所有这些文件也彼此并排。我的研究并没有真正发现任何东西,vimdiff似乎是迄今为止最好的一次,可以一次比较4个。
我的问题:是否有任何实用程序可以一次比较两个以上的文件,或者可以通过一种方法来比较diff / vimdiff以便进行多个比较?我要比较的文件相对较短,因此应该不会太慢。
提前致谢!
Answers:
使用Diffuse可以轻松并排显示10个文件并突出显示差异。只需在命令行上指定所有文件,如下所示:
漫射1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 8.txt 9.txt 10.txt
Vim已经可以做到这一点:
vim -d file1 file2 file3
但是通常您只能使用4个文件。您可以通过修改Vim源代码中的一行来更改它。该常数DB_COUNT
定义了差异文件的最大数量,它diff.c
在版本6.x和更早版本的顶部定义,或者structs.h
在版本7.0及更高版本中的大约三分之二处定义。
diff
具有内置选项--from-file
和--to-file
,它将一个操作数与所有其他操作数进行比较。
--from-file=FILE1
Compare FILE1 to all operands. FILE1 can be a directory.
--to-file=FILE2
Compare all operands to FILE2. FILE2 can be a directory.
结帐“超越比较”:http : //www.scootersoftware.com/
它使您可以比较文件的整个目录,看起来它也可以在Linux上运行。
如果您基于一个文件运行多个差异文件,则可以尝试编写一个包含for循环的脚本,以遍历每个目录并运行差异文件。尽管不会并排,但您至少可以快速比较它们。希望能有所帮助。
没有回答主要问题,但这类似于本杰明·尼尔(Benjamin Neil)提出的建议,只是区别了所有文件:
将文件名存储在数组中,然后遍历2号和diff的组合(或执行任何您想做的事情)。
files=($(ls -d /path/of/files/some-prefix.*)) # Array of files to compare
max=${#files[@]} # Take the length of that array
for ((idxA=0; idxA<max; idxA++)); do # iterate idxA from 0 to length
for ((idxB=idxA + 1; idxB<max; idxB++)); do # iterate idxB + 1 from idxA to length
echo "A: ${files[$idxA]}; B: ${files[$idxB]}" # Do whatever you're here for.
done
done
源自@ charles-duffy的答案:https : //stackoverflow.com/a/46719215/1160428