Bash - Diff更改标题(文件名)

时间:2011-03-27 13:09:46

标签: bash shell diff

我正在从diff diff -u $i /tmp/b/${i#/tmp/a/} > /tmp/patch/$j.patch创建.patch文件,我想问一下如何更改每个补丁文件头中的文件名。现在我有/tmp/a/...我希望a/...谢谢

3 个答案:

答案 0 :(得分:2)

AFAIK在diff中没有直接选项。使用patch时使用-p <num>选项来剥离路径时应用差异。在您的情况下,-p2会给出所需的结果。

答案 1 :(得分:2)

也许我不明白,但如果你只是在“坐”/ tmp时开始你的过程 提供diff相对路径 - 它不会起作用吗?似乎为我工作 (p.s.不知道你的外循环或$ i&amp; $ j之间的差异是什么,所以用我自己的例子和FLAT树)

cd /tmp
for i in a/*; do 
  diff -u "${i}" "b/${i#a/}" > "/tmp/patch/${i#a/}.patch"
done

答案 2 :(得分:1)

您还可以使用sed等更改每个补丁文件中的文本。然后使用diff验证更改。如果你弄错了,你可以弄清楚应用于diff输出的diff的输出,有趣的是:)