Сравнение файлов в Linux (cmp)
Команда cmp
сравнивает два файла и выдаёт есть ли между ними различия. Для примеров используем несколько файлов:
user@debian-server:~/test$ cat file1.txt
abcdef
user@debian-server:~/test$ cat file2.txt
abcdef
user@debian-server:~/test$ cat file3.txt
abcdefgh
user@debian-server:~/test$ cat file4.txt
abzdwf
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Если два файла полностью совпадают, то команда ничего не возвращает.
user@debian-server:~/test$ cmp file1.txt file2.txt
user@debian-server:~/test$
1
2
2
В случае если один файл больше другого и начальная часть большего файла совпадает с меньшим файлом cmp
выдаст сообщение о том, что меньший файл закончился (EOF — End Of File).
user@debian-server:~/test$ cmp file1.txt file3.txt
cmp: EOF on file1.txt after byte 6, in line 1
1
2
2
Если в файлах есть различие, то cmp
остановится на первом различающемся байте и выдаст сообщение с его номером.
user@debian-server:~/test$ cmp file1.txt file4.txt
file1.txt file4.txt differ: byte 3, line 1
1
2
2
С параметром -b
команда cmp
выведет значения различающегося байта.
user@debian-server:~/test$ cmp -b file1.txt file4.txt
file1.txt file4.txt differ: byte 3, line 1 is 143 c 172 z
1
2
2
А с параметром -l
весь список различающихся байт.
user@debian-server:~/test$ cmp -l file1.txt file4.txt
3 143 172
5 145 167
1
2
3
2
3
Параметры можно скомбинировать
user@debian-server:~/test$ cmp -lb file1.txt file4.txt
3 143 c 172 z
5 145 e 167 w
1
2
3
2
3