Linux

diff와 patch 사용

정든친구 2019. 8. 8. 16:08

diff -urN --execlude='*.tmp' <예전 디렉토리/파일> <새 디렉토리/파일>

 

-u: 통합(Unified)형식으로 결과물을 출력

-r: 재귀적(Recursive) 디렉토리를 탐색하라

-N: 존재하지 않는 파일을 비어있다고 취급하라는 의미

--execlude='*.tmp': *.tmp 파일을 제외한 나머지 파일만 비교하라

 

패치파일 생성

diff -urN --execlude='*.tmp' ./from_dir ./to_dir > diff_result.diff

 

패치 적용

$ rm to_dir

$ ls

from_dir

$ cat ./diff_result.diff | patch -p1

 

-p: 패치 파일에 들어 있는 /(슬래시) 문자를 제거

  • -p0: 전체 파일 경로 그대로 사용
  • -p1: 경로 중 앞의 /(슬래시) 하나를 날림. /home/sample/src/lab1/test.c -> home/sample/src/lsb1/test.c
  • -p4: 4번째 /(슬래시) 까지의 문자를 모두 제거. /home/sample/src/lab1/test.c -> lab1/test.c