2010-10-16 59 views

回答

12

patchutils包括lsdiff實用程序。

+1

太糟糕了,它不是標準補丁或diff包的一部分。 – Saustrup 2014-06-05 12:17:57

2

grep '+++' mydiff.patch似乎是伎倆。我可以使用git diff --names-only這可能是更好的方法。

1
grep '+++' mydiff.patch|perl -pe 's/\+\+\+ //g' 

詳情:

git的差異格式產生輸出

+++ b/file 

所以,如果你用grep彌敦道建議

grep '+++' mydiff.patch 

你必須列表受影響的文件,由'+++'(3加號和一個空格)前綴。

我經常需要進一步處理文件,並且發現每行只有一個文件名而沒有其他任何文件很方便。這可以通過以下命令來實現,其中perl/regex刪除這些加號和空格。

grep '+++' mydiff.patch|perl -pe 's/\+\+\+ //g' 

對於用Diff -Naur產生,所述mydiff.patch文件包含文件名和日期條目補丁文件(正指示製表空白字符)

+++ b/file<tab>2013-07-03 13:58:45.000000000 +0200 

爲了提取該文件名,使用

grep '+++' mydiff.patch|perl -pe 's/\+\+\+ (.*)\t.*/\1/g' 
相關問題