개요
`diff -r`은 두 디렉토리 구조와 그 안에 포함된 파일들을 비교하여 차이점을 식별합니다. 파일 내용의 차이뿐만 아니라, 한쪽에만 존재하는 파일이나 디렉토리도 보고합니다.
주요 특징
- 두 디렉토리의 파일 및 하위 디렉토리 재귀적 비교
- 파일 내용의 차이점 상세 보고
- 한쪽에만 존재하는 파일 또는 디렉토리 식별
- 버전 관리 시스템(VCS)에서 변경 사항 추적에 활용
주요 옵션
`diff` 명령어의 다양한 옵션 중, 특히 디렉토리 재귀 비교(`-r`)와 함께 자주 사용되는 옵션들입니다.
비교 방식 및 출력
생성된 명령어:
명령어를 조합해 보세요.
설명:
`diff-r` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
두 디렉토리의 내용을 비교하는 다양한 `diff -r` 활용 예시입니다.
두 디렉토리 재귀 비교
diff -r dir1 dir2
dir1과 dir2 디렉토리의 모든 파일과 하위 디렉토리를 비교합니다.
재귀 비교 (간략한 요약)
diff -rq dir1 dir2
차이점이 있는 파일만 나열하고, 파일 내용의 상세한 차이는 생략합니다.
새 파일도 비교에 포함
diff -rN dir1 dir2
한쪽에만 존재하는 파일을 다른 쪽에서는 비어있는 파일로 간주하여 비교 결과에 포함시킵니다.
특정 파일/디렉토리 제외
diff -r --exclude='.git' --exclude='*.log' dir1 dir2
`.git` 디렉토리와 `.log` 확장자를 가진 파일을 비교에서 제외합니다.
통합 형식으로 패치 파일 생성
diff -ru dir1 dir2 > changes.patch
두 디렉토리의 차이점을 통합 형식으로 출력하고, 이를 `changes.patch` 파일로 저장합니다. 이 파일은 `patch` 명령어로 적용할 수 있습니다.
팁 & 주의사항
`diff -r`은 강력한 도구이지만, 대규모 디렉토리를 비교할 때는 성능과 출력 결과 해석에 주의해야 합니다.
효율적인 사용 팁
- **성능 최적화**: 대규모 디렉토리 비교 시 `-q` (간략 출력) 옵션을 사용하여 파일 내용의 상세한 차이 대신 차이점 유무만 확인하면 비교 속도를 높일 수 있습니다.
- **불필요한 파일 제외**: `--exclude` 옵션을 활용하여 버전 관리 시스템(예: `.git`, `.svn`), 빌드 아티팩트(예: `*.o`, `*.pyc`), 로그 파일(예: `*.log`) 등 비교할 필요가 없는 파일이나 디렉토리를 제외하면 비교 속도를 높이고 출력 결과의 노이즈를 줄일 수 있습니다.
- **패치 파일 생성**: `diff -ru dir1 dir2 > changes.patch` 명령으로 생성된 패치 파일은 `patch -p1 < changes.patch` 명령으로 다른 디렉토리에 쉽게 변경 사항을 적용할 수 있습니다.
- **바이너리 파일**: `diff`는 기본적으로 텍스트 파일에 최적화되어 있습니다. 바이너리 파일의 차이점만 확인하려면 `cmp` 명령어를 사용하거나, `diff`가 바이너리 파일임을 감지하면 'Binary files ... differ'와 같이 출력합니다.