리눅스 diff 명령어 활용법

diff 명령어는 두 파일 또는 디렉터리 간의 차이점을 비교하는 데 사용됩니다. 이 도구는 텍스트 파일을 줄 단위로 분석하여 변경된 부분을 식별합니다.

기본 문법

diff [옵션]... [파일1|디렉터리1] [파일2|디렉터리2]

주요 옵션

  • -a, --text: 모든 파일을 텍스트로 처리하여 비교
  • -b, --ignore-space-change: 공백 문자 변경 무시
  • -B, --ignore-blank-lines: 빈 줄 무시
  • -c, -C NUM, --context[=NUM]: 컨텍스트 형식으로 출력 (기본 3줄)
  • -d, --minimal: 최소한의 변경 사항만 표시 (속도 저하 가능성 있음)
  • -i, --ignore-case: 대소문자 구분 안 함
  • -q, --brief: 차이점 존재 여부만 출력
  • -r, --recursive: 디렉터리 내부 재귀적으로 비교
  • -u, -U NUM, --unified[=NUM]: 통합 형식으로 출력 (기본 3줄)
  • -y, --side-by-side: 나란히 비교 형식

사용 예제

두 개의 텍스트 파일 생성:

echo -e "text line\n\nOriginal file\nExtra data\nUser Info" > file_a.txt
echo -e "text line\n\nModified file" > file_b.txt

기본 비교 실행:

diff file_a.txt file_b.txt

출력 결과:

3,5c3
< Original file
< Extra data
< User Info
---
> Modified file

병렬 비교 형식 적용:

diff -y file_a.txt file_b.txt

출력 결과:

text line                           text line

Original file                     | Modified file
Extra data                        <
User Info                         <

통합 형식으로 비교:

diff -u file_a.txt file_b.txt

출력 결과:

--- file_a.txt    2023-10-01 10:00:00.000000000 +0900
+++ file_b.txt    2023-10-01 10:00:00.000000000 +0900
@@ -1,5 +1,3 @@
 text line

-Original file
-Extra data
-User Info
+Modified file

디렉터리 비교 예시:

mkdir folder1 folder2
echo "content A" > folder1/doc1.txt
echo "content B" > folder2/doc1.txt
echo "unique" > folder1/extra.txt
diff folder1 folder2

출력 결과:

diff folder1/doc1.txt folder2/doc1.txt
1c1
< content A
---
> content B
Only in folder1: extra.txt

변경 사항을 패치 파일로 저장:

diff -u file_a.txt file_b.txt > update.patch

고급 기능

Vim 에디터에서도 유사한 기능을 제공합니다:

vimdiff file_a.txt file_b.txt

이 명령은 시각적으로 차이점을 강조하여 표시하며, Vim의 편집 기능과 결합해 사용할 수 있습니다.

태그: linux diff file-comparison command-line unix-tools

8월 5일 08:13에 게시됨