Команда Diff для сравнения файлов, которые находятся только в первом каталоге

У меня есть 2 папки, содержимое которых я хочу сравнить. Например, у меня есть папка 1 и папка 2. В папке 2 есть много новых файлов + некоторые файлы, такие же, как в папке 1, но с некоторыми изменениями в содержимом этих файлов. Теперь я хочу сравнить папку 1 и папку 2, чтобы получить список файлов папки 1, которые изменены или отсутствуют в папке 2.

Когда я запускаю следующую команду:

diff --brief -r folder1/ folder2/ > diff.txt

It также дает мне список новых файлов папки 2.

Я хочу сравнить папку 1 и папку 2, чтобы получить список только тех файлов папки 1, которые отсутствуют или изменены в папке 2.

Как мне этого добиться?

Пожалуйста, не рекомендую Meld, я уже пробовал, и это не поможет. Я подумал, командная строка будет быстрее.

ОБНОВЛЕНИЕ

find folder1 -type f -exec diff --brief --from-file=folder2 {} +

не дает мне полный путь к разным / отсутствующим файлам.

1
задан 27 February 2017 в 18:46

2 ответа

Следующее работало:

diff --brief -r folder1/ folder2/ | grep folder1/ > diff.txt
0
ответ дан 27 February 2017 в 18:46
  • 1
    Впоследствии я запустил в режиме восстановления снова и ввел корневой доступ, сделал команду монтирования, проверенную, были ли изменения сохранены (они были сохранены), и ввел " systemctl reboot" сделать регулярное завершение работы, но все еще начальную загрузку: (Просто думал, что регулярное завершение работы могло помочь, потому что иначе я всегда должен был нажимать и держать кнопку питания. – Corrumpo 26 October 2018 в 03:37

--from-file опция могла бы быть полезной:

$ diff -r --brief foo bar
Files foo/a and bar/a differ
Files foo/b and bar/b differ
Files foo/c and bar/c differ
Only in bar: d
$ diff --brief --from-file=bar foo/*
Files bar/a and foo/a differ
Files bar/b and foo/b differ
Files bar/c and foo/c differ

Так, в Вашем случае, это было бы:

diff --brief --from-file=folder2 folder1/*

существует также --unidirectional-new-file опция:

--unidirectional-new-file
      treat absent first files as empty

С ним:

$ diff /tmp/foo/ /tmp/bar -r --brief --unidirectional-new-file
Files /tmp/foo/a and /tmp/bar/a differ
Files /tmp/foo/b and /tmp/bar/b differ
Files /tmp/foo/c and /tmp/bar/c differ
0
ответ дан 27 February 2017 в 18:46
  • 1
    Я попробовал это. В корневом доступе я ввел " exit" впоследствии и затем нажатый на " resume" впоследствии. Предупреждение о графике появляется (что-то как необходимость полностью перезапустить для некоторых компонентов для работы), и впоследствии я вхожу в консоль, снова показывающую " Вы находитесь в чрезвычайном режиме. [...] Нажмите Enter для обслуживания...". после того, как я нажал Enter, снова, компьютер застревает.: ( – Corrumpo 26 October 2018 в 03:36

Другие вопросы по тегам:

Похожие вопросы: