Необходимо установить ntfs-3g драйвер файловой системы и смонтировать диск с помощью этого вместо текущего ntfs драйвера.
Нечетный.. можно ли попробовать cmp
? Можно хотеть использовать'-b
'опция также.
страница справочника cmp - Сравнивает два байта файлов байтом.
Это - одна из хороших вещей о Unix/Linux.. столько инструментов :)
Различия могли бы быть вызваны DOS по сравнению с окончаниями строки UNIX или чем-то подобным?
Что, если Вы hexdump
их? Это могло бы показать различия, более очевидно, например:
hexdump -C file1 > file1.hex
hexdump -C file2 > file2.hex
diff file1.hex file2.hex
Мое первое предположение, которое оказывается подтвержденным, то, что файлы используют различные окончания строки. Это могло быть некоторое другое различие в пробеле, таком как присутствие запаздывающего пробела (но Вы обычно не будете получать это на многих строках), или другое добавление отступа (вкладки по сравнению с пробелами). Используйте команду, которая распечатывает пробельные и управляющие символы в видимой форме, такой как
diff <(cat -A file1) <(cat -A file2)
diff <(sed -n l file1) <(sed -n l file2)
Можно подтвердить, что различия только имеют отношение к окончаниям строки путем нормализации их сначала. У Вас может быть a dos2unix
утилита; в противном случае удалите дополнительный CR (^M, \r, \015) символ явно:
diff <(tr -d '\r' <file1) <(tr -d '\r' <file2)
или, если file1
тот с окончаниями DOS
tr -d '\r' <file1 | diff - file2
Попытка:
diff file1 file2 | cat -t
-t
опция вызовет cat
показать любые специальные символы ясно - например. ^M
для CR, ^I
для вкладки.
Из страницы справочника (OS X):
-t Display non-printing characters (see the -v option), and display tab characters as `^I'. -v Display non-printing characters so they are visible. Control characters print as `^X' for control-X; the delete character (octal 0177) prints as `^?'. Non-ASCII characters (with the high bit set) are printed as `M-' (for meta) followed by the character for the low 7 bits.
Другие ответы достаточно полны, но предоставляют способы явного отображения невидимых различий. Впрочем, есть еще вариант :с игнорированием этих различий, которые как-то неважны. В некоторых случаях знать об этих различиях бесполезно.
Командаdiff
имеет несколько полезных опций, касающихся этого:
--strip-trailing-cr
strip trailing carriage return on input
-B, --ignore-blank-lines
ignore changes where lines are all blank
-Z, --ignore-trailing-space
ignore white space at line end
Лично я нашел --strip-trailing-cr
полезным, особенно при использовании-r
(т. е. опции--recursive
)в больших проектах или когдаcore.autocrlf
Git неfalse
(т. е. true
илиinput
).
Для получения дополнительной информации об этих и других параметрах см. его справочную страницу(или черезman diff
).
Примечание.:Использование этих параметров влияет на скорость получения результатов, особенно в случае больших файлов/каталогов. В одном из моих собственных случаев это увеличило время манипуляции с 0.321s
до 0.422s
.
Для всех пользователей Windows это можно сделать с помощью fc. Он может использовать бинарное сравнение.
fc /B file1 file2
В окне со стороны -и -со стороны добавьте --suppress-common-lines
к опциям.
Все другие ответы и комментарии здесь полезно знать, но их недостаточно . Исходный вопрос явно о стороне -путем сравнения -стороны . Даже файлы, созданные с помощью cp
, будут полностью перечислены в стороне -по -в стороннем режиме -, все проблемы с переводом строки, пробелами или специальными символами в стороне. Вам всегда понадобится --suppress-common-lines
, чтобы получить желаемый результат.
Это может быть неочевидно для неанглоязычных носителей, так как common может интерпретироваться как «нормальный», а не как «взаимный». Возможно, было бы проще, если бы было сказано «подавить -равные -строки» или подобное.И меня очень удивило, что для такой «общей» :)задачи не было короткого, однобуквенного варианта.
-b
дляignore changes in the amount of white space
. – rahul.deshmukhpatil 26.08.2016, 09:22