Как получить результат в другом файле после применения diff к файлам A.txt и B.txt.
Предположим, что файл A.txt имеет:
a
b
c
Файл B.txt имеет:
a
b
при запуске
diff A.txt B.txt Он дает результат как c, но как сохранить его в файле C.txt?
Как получить результат в другом файле после применения diff к файлам A.txt и B.txt.
Предположим, что файл A.txt имеет:
a
b
c
Файл B.txt имеет:
a
b
при запуске
diff A.txt B.txt Он дает результат как c, но как сохранить его в файле C.txt?
Утилита diff
производит вывод на стандартный вывод (обычно консоль). Как любая утилита UNIX, которая делает это, ее вывод может быть очень просто перенаправлен в файл, подобный этому:
diff A.txt B.txt >C.txt
Это означает "выполнить команду diff
с двумя аргументами (файлы A.txt
и B.txt
) и поместить все, что в противном случае отображалось бы на консоли, в файл C.txt
". Сообщения об ошибках все равно будут отправляться на консоль.
Чтобы сохранить вывод diff
в файл, а также отправить его на терминал, используйте tee
так:
diff A.txt B.txt | tee C.txt
tee будет дублировать данные для всех именованных файлов (здесь только C.txt
), а также для стандартного вывода (скорее всего, терминала).
Используя >
, вы можете перенаправить вывод в файл. Например:
diff A.txt B.txt > C.txt
Это приведет к тому, что результат команды diff будет сохранен в файле C.txt.
Используйте Перенаправление вывода.
diff file1 file2 > output
сохранит diff файлов file1 и file2 для вывода
Есть некоторые файлы, которые diff
может не справиться с выводом, такие как блочные специальные файлы, символьные специальные файлы и неработающие ссылки. Вывод из-за различий с ними может перейти к стандартной ошибке.
Интересно, что когда я перенаправил стандартную ошибку, я все еще пропустил некоторые вещи:
diff -qr <DirA> <DirB> 2>&1 > mydiff.txt
Единственный способ увидеть результаты всего было:
diff -qr <DirA> <DirB> |tee mydiff.txt
Я сравнивал результаты смонтированного каталога live-cd после копирования на внешний HD