> 파일 및 디렉토리 관리 > diff-r

diff -r: 디렉토리 재귀 비교

`diff` 명령어는 두 파일 간의 차이점을 찾아내는 데 사용됩니다. 여기에 `-r` (또는 `--recursive`) 옵션을 추가하면, 두 디렉토리의 내용을 재귀적으로 비교하여 어떤 파일이 다르거나 한쪽에만 존재하는지 상세하게 보고합니다. 이는 코드 베이스, 설정 파일 또는 데이터 디렉토리의 변경 사항을 추적하고 관리하는 데 매우 유용합니다.

개요

`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'와 같이 출력합니다.

동일 카테고리 명령어