Bash - Diff изменить заголовок (имя файла) - PullRequest
0 голосов
/ 27 марта 2011

Я создаю файл .patch из diff diff -u $i /tmp/b/${i#/tmp/a/} > /tmp/patch/$j.patch и хочу спросить, как я могу изменить имена файлов в заголовке каждого файла исправления.Теперь у меня есть /tmp/a/... и я хочу a/... Спасибо

Ответы [ 3 ]

2 голосов
/ 27 марта 2011

Может быть, я не понимаю, но если бы вы просто начали свой процесс, сидя "в / tmp" предоставление diff относительного пути - разве это не сработает? Кажется, работает на меня (p.s. не знал, каков ваш внешний цикл или разница между $ i & $ j, поэтому использовал мой собственный пример с деревом FLAT)

cd /tmp
for i in a/*; do 
  diff -u "${i}" "b/${i#a/}" > "/tmp/patch/${i#a/}.patch"
done
2 голосов
/ 27 марта 2011

AFAIK, в diff прямой опции для этого нет. При применении различий с patch используйте параметр -p <num>, чтобы убрать пути. В вашем случае -p2 даст желаемый результат.

1 голос
/ 27 марта 2011

Вы также можете использовать sed или что-то подобное, чтобы изменить текст в каждом файле патча.А затем используйте diff для проверки изменений.И если вы ошиблись, вы получите представление о выходе diff, применяемом к выводу diff, что интересно:)

...