1

пытался сравнить две директории. один каталог - это справочный каталог (dir1), а другой - каталог, в котором выполняются изменения (dir2)

Мне нужен список файлов, которые изменены или добавлены в dir2 по сравнению с dir1.

Я использовал rsync и diff и получил результат. Но нужны файлы с абсолютным путем на выходе.

diff - краткое описание - recursive /test /dir2 /reference /dir1

Выход

Только в /test /dir2: king.txt

Только в /test /dir2 /sdir2: abc.txt

Только в /test /dir2: test1

Только в /test /dir2 /sdir3: test.txt

и с помощью rsync

rsync -av --dry-run /test /dir2 / / reference /dir1

выход

отправка списка добавочных файлов

,/

king.txt

test.txt

sdir2/

sdir2/abc.txt

test1/

отправлено 52712 байт, получено 1339 байт, 108102,00 байт / с

общий размер 0 ускорение составляет 0,00 (СУХОЙ БЕГ)

нужен список с полным путем /test/dir2/king.txt и храниться в одном файле.

С наилучшими пожеланиями, KJ.

2 ответа2

2

Вы можете просто проанализировать вывод diff:

diff --brief --recursive /test/dir2/ /reference/dir1/ | 
  gawk '(/Only/){print $3""$NF}' | sed 's/://'

Убедитесь, что вы включаете конечные / в имена каталогов, это решение ожидает их. Используйте /test/dir2/ а не /test/dir2 . Кроме того, это не будет работать, если ваши имена файлов содержат пробелы.

1

Должно быть достаточно легко настроить вывод diff в соответствии с вашими потребностями ... просто передайте diff через sed.

sed -r -e 's/^.*Only in //' -e 's@: @/@'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .