파일 및 디렉토리 비교 도구?


149

Beyond Compare가 창에서하는 것과 같은 디렉토리와 파일을 비교할 무언가를 찾고 있습니다.

주로 소스 제어를 사용하기위한 것이지만 배포에도 사용해야합니다.


파일 목록 만 또는 각 파일의 실제 내용을 원하십니까?
Martin Ueding

파일 목록을 원하고 가능한 경우 동일한 경로를 가진 파일간에 다른 내용을 원합니다.
isoman

2
GUI 도구 가 동일한 폴더 및 파일을 숨길 수 있으면 편리 합니다 . 이렇게하면 홀수 폴더 및 파일에 훨씬 쉽게 집중할 수 있습니다. 누구든지이 기능을 지원하는 도구를 알고 있습니까?
JJD

일제히 보세요 . 비욘드 비교는 "원 스톱 쇼핑"을 모두 수행하는 반면, 트리 트래버스 처리, 상태 유지 및 변경 전파에 중점을두고, diff, 3-way merge 등과 같은 것을 위임하여 Beyond Compare 기능 을 다루는 것에 중점을 둡니다 . 파일 수준에서 작동하는 좋아하는 프로그램. Unison은 무료이며 매우 강력하고 성숙한 소프트웨어로 다양한 OS 간의 네트워크 등을 통해 거대한 트리를 신속하게 감지하고 동기화 할 수 있습니다. 특히 Windows에서 문서를 먼저 읽으십시오.
Stéphane Gourichon

emacs에는 디렉토리 비교 도구가 있습니다. 모든 이맥스와 마찬가지로 아이 캔디는 "아이 캔디의 의미는 무엇입니까?"이지만 키를 사용하여 상황에 맞는 도움말을 보여줍니다. 키를 몇 번만 누르면 재귀 분석이 가능하고 동일한 파일이나 하위 디렉토리를 숨기고 대화 형으로 파일을 선택하여 색상을 표시합니다 다양한 옵션으로 코딩 된 차이점, 대화 형으로 병합, 전파 또는 파일에 대한 임의 편집 수행, 모든 일반적인 편집 기능을 사용하여 상태를 추적하면서 다음 파일 또는 디렉토리로 쉽게 이동합니다.
Stéphane Gourichon

답변:


175

용융멜드 설치

Meld는 파일과 디렉토리를 비교하고 병합 할 수있는 도구입니다. 표준 diff diffutils 설치patch 패치 설치명령 행 도구 와 유사한 GUI 입니다. (자세한 내용은 man diffman patch 를 참조하십시오)

여기에 이미지 설명을 입력하십시오

또한 많은 소스 제어 시스템 ( bzr bzr-gtk 설치또는 등 git 자식 설치)은 버전간에 차이를 만들 수 있습니다.


2
Meld는 놀랍습니다. 나는 그것을 소스 컨트롤 diff로 사용합니다.
Matt Joiner

12
더 큰 폴더-4GB, 2000 파일에서 시도했습니다. 멜드의 기능은 원하는대로이다. 그러나이 폴더의 경우 meld가 매우 느리고 UI가 응답하지 않습니다 (블록). 지금 rsync를 사용하고 있습니다.
geekQ

1
또한 텍스트 파일을 나란히 비교하거나 붙여 넣기를 복사하는 데에도 효과적입니다. 내가 본 최고의 인터페이스!
Stefan Rogin

@geekQ를 빠른 대안으로 사용하면 원하는만큼 큰 폴더를 즉시 처리 할 수 ​​있습니다 ( beyond compare아래 참조). 이럴 융합하는 우수
phil294

융합 내가 폴더를 선택 할 때마다 충돌 : / 내 유통 저장소에 최신 버전 availabe이 (우분투 14.04)
Youda008

44

Diff는 당신의 친구입니다.

diff -ur path1 path2

경로 1과 경로 2 사이에 공통 인 모든 파일을 비교합니다.

당신이 변경하는 경우 -ur-urN그 또한 경로 중 하나에서만 존재하는 파일의 내용을 표시합니다.


1
설치 colordiff및 사용colordiff -ur path1 path2
warvariuc

cygwin에서 작동하지 않습니다.
Tomáš Zato


13

다음 diff명령을 사용하십시오 .

diff -u file1 file2

diff -u몇 줄의 컨텍스트가있는 형식을 선택합니다. 평원 diff file1 file2에는 다른 선만 나열됩니다. 출력 형식을 제어하고 공백 전용 차이를 무시하는 등 더 많은 옵션이 있습니다.

출력을 파일에 쓰려면 경로를 재 지정하십시오.

diff -u file1 file2 >file1-file2.diff

12

그놈 사령관그놈 사령관 설치

인터페이스가 실제로 섹시하지는 않지만 매우 강력합니다!

대체 텍스트

그리고 다른 * 사령관 (Norton 등)에 익숙해 져도 길을 잃지 않습니다.


1
두 파일을 비교하는 데 사용하지는 않았지만 디렉토리와 비교하는 동안 다른 파일을 알려주는 데 사용했습니다. 이것은 사진을 분류 할 때 특히 유용합니다 ;-)
Huygens

10

명령 줄 도구

이 블로그 항목에서 영감을 얻었습니다 .

차이

다른 파일 나열 :

diff -qr folder1 folder2

내용 나열 :

diff -Naur folder1 folder2

rsync

두 디렉토리가 동일한 시스템에 없으면 rsync가장 쉬운 솔루션 일 수 있습니다. 일반적으로 rsync디렉토리를 동기화하기 위해 사용되지만, 상세 및 드라이 모드로 실행할 수 있으므로 변경해야 할 파일 만 나열합니다.

rsync -rvnc --delete folder1 server:/path/to/folder2

c타임 스탬프와 파일 크기를 기준으로 파일을 비교하여 모든 것을 가속화하려는 경우 생략 할 수 있습니다 .

rsync -rvn --delete folder1 server:/path/to/folder2

9

크루 세이더krusader 설치

Krusader는 폴더 내용을 비교하여 보여주는 다양한 도구 (소프트웨어 센터에서 사용 가능)이며 다양한 옵션과 동기화 할 수 있습니다. 동기화 및 비교하는 동안 필터링 할 수 있습니다.

크루 세이더

파일 내용을 비교하기 위해 단순히 두 파일을 표시하려면 "파일"> "내용 비교"를 선택하고 문자를 기준으로 비교합니다. krusader에서 사용하는 기본 비교 도구는 기본 KDE 도구 " Kompare "입니다. krusader를 설정하여 위와 같은 다른 비교 도구를 사용할 수 있습니다.

이것은 내가 찾은 가장 완벽한 솔루션이며 매우 편리합니다. 그리고 자정 사령관 (노턴 사령관 구문)이 사용하는 모든 기능 키 바인딩을 지원합니다.


"도구-> 디렉토리 동기화"를 사용하여 두 디렉토리 패널의 재귀 파일 변경보기를 얻을 수도 있습니다.
Angelos Pikoulas

불행히도 krusader의 동기화 프로그램은 유지되지 않습니다 : bugs.kde.org/show_bug.cgi?id=270150#c7 . 적극적으로 관리되는 대안이 있습니까?
rubo77

1
@ rubo77 :이 버그는 그동안 수정되었습니다.
mivk

9

KDiff3 kdiff3 설치

KDE 사용자를위한 그래픽 프런트 엔드입니다 (또는 Qt 앱 사용에 신경 쓰지 않는 경우).

kdiff3

디렉토리에 대한 차이 도 있습니다 dirdiff 설치.



4

Unison은 rsync 알고리즘을 사용하는 빠른 파일 동기화 도구이며 원격 또는 로컬의 두 위치간에 업데이트하기 전에 차이점을 미리 볼 수 있습니다.


4

2 주 전에 해시 딥 에 대해 배웠습니다 . 그리고 몇 가지 강력한 장점이 있습니다.

  • 반대로 meld, 매우 큰 폴더에 적합합니다. 어디 meld(차단) 매우 느린 및 UI 응답하지 않게, hashdeep은 일정한 속도로 작동합니다
  • 반대로 rsynchashdeep은 다른 디렉토리에서 동일한 내용의 파일을 이동시킵니다.

자세한 출력은 다음과 같습니다.

...
foo/bar.txt: Known file not used
x/foo/M0824_2L.JPG: Moved from y/P1010998.JPG

hashdeep: Audit failed
   Input files examined: 0
  Known files expecting: 0
          Files matched: 6233
Files partially matched: 0
            Files moved: 3695
        New files found: 19257
  Known files not found: 4713

4

이 비교를 수행하는 좋은 방법은 " find "를 " md5sum " 과 함께 사용 하고 " diff "를 사용하는 것입니다.

예:

find를 사용하여 디렉토리의 모든 파일을 나열한 다음 각 파일의 md5 해시를 계산하고 파일로 파이프하십시오.

$find /dir1/ -type f -exec md5sum {} \; > dir1.txt

다른 디렉토리와 동일한 절차를 수행하십시오.

$find /dir2/ -type f -exec md5sum {} \; > dir2.txt

그런 다음 결과 두 파일을 "diff"와 비교하십시오.

$diff dir1.txt dir2.txt

이 전략은 비교할 두 디렉토리가 동일한 시스템에 있지 않고 두 디렉토리에서 파일이 동일한 지 확인해야 할 때 매우 유용합니다.

작업을 수행하는 또 다른 좋은 방법은 git을 사용하는 것입니다.

git diff --no-index dir1/ dir2/

친애하는!


3

FreeFileSync 도 시도하십시오 . 그것은 적절한 인터페이스, 수용 가능한 비교 속도, 비교 결과의 좋은 필터링, 다른 동기화 방법을 가지고 있습니다. 특정 폴더 또는 파일이 변경 될 때 FreeFileSync (실제로 모든 명령 또는 스크립트)를 시작할 수있는 폴더 모니터링 도구 (RealTimeSync)가 제공됩니다. 시도해 볼 가치가 있습니다.

그것에 대해 더 많은 정보를 원하시면 여기 또는 여기 당신이 가지고 PPA를 너무

그들의 페이지에서 주요 기능 :

파일을 바이트 단위 또는 날짜별로 비교하고 동기화하십시오.

제한 사항 없음 : 임의의 수의 파일을 동기화 할 수 있습니다.

유니 코드 지원

네트워크 지원.

매우 긴 파일 이름 (MAX_PATH = 260 자 이상)을 기본적으로 지원합니다.

삭제 된 파일 전파 및 충돌 감지를위한 동기화 데이터베이스

고유 한 구성으로 여러 폴더 쌍 지원

Windows / Linux Symbolic Links 및 Windows Junction Point를 완벽하게 지원합니다.

린 (Lean) 및 쉽게 액세스 할 수있는 UI : 속도 및 방대한 데이터 세트에 최적화되어 있습니다.

알고리즘은 C ++로 완전히 코딩되었습니다.

최대 성능을 위해 최적화 된 모든 진행률 표시기!

GUI를 사용하거나 사용하지 않고 자동화 된 동기화를위한 배치 작업을 작성하십시오.

유용성에 초점 :

UI에서 필요한 기능 만 : 오버로드 된 메뉴 나 아이콘 정글이 없습니다.

끌어서 놓기를 통해 모든 폴더를 선택하십시오.

마지막으로 사용한 구성 및 화면 설정이 자동으로 저장됩니다.

끌어서 놓기,로드 버튼 또는 명령 줄을 통해 다른 구성을 유지하고로드합니다.

두 번 클릭하여 외부 응용 프로그램을 시작합니다 (예 : Windows 탐색기에서 파일 표시)

모든 그리드 데이터를 텍스트로 복사하여 붙여 넣기

주 그리드에서 불필요한 / 임시 파일을 직접 삭제하십시오.

상황에 맞는 메뉴를 마우스 오른쪽 버튼으로 클릭하십시오.

종합적인 상태 정보 및 오류보고

이름, 크기 또는 날짜별로 파일 목록을 정렬하십시오.

4GB보다 큰 파일 크기를 지원합니다.

파일을 삭제 / 덮어 쓰지 않고 휴지통으로 옮기는 옵션.

기본 필터를 사용하여 "\ RECYCLER"및 "\ System Volume Information"디렉토리를 무시하십시오. (Windows 만 해당)

현지화 된 버전은 여러 언어로 제공됩니다.

복사 전 삭제 : 대규모 동기화 작업의 디스크 공간 부족을 피하십시오.

동기화에서 파일을 포함 / 제외하도록 필터링 기능 (다시 비교하지 않아도 됨)

특정 파일을 동기화에서 일시적으로 포함 / 제외합니다.

FAT / FAT32 볼륨에서 일광 절약 시간제 변경 사항을 자동으로 처리합니다.

휴대용 버전 사용 가능 (설치 프로그램을 통해 선택 가능).

기본 64 비트 버전.

FreeFileSync 내에서 자동으로 업데이트를 확인하십시오.

Windows 볼륨 섀도 복사본 서비스를 사용하여 잠긴 파일을 복사하십시오. (Windows 만 해당)

디렉토리 이름 내에 매크로 % time %, % date %를 사용하여 정기적 인 백업 생성

동기화시 파일 및 폴더 생성 / 액세스 / 수정 시간 복사

여러 동기화 프로세스 (예 : 여러 작성자, 동일한 네트워크 공유)를 허용하는 고급 잠금 전략

삭제 된 파일을 관리하고 휴지통 또는 사용자가 지정한 폴더로 이동하여 추가 할 수 있습니다. 단점 : 프로그램 문서는 Linux보다는 Windows에 중점을 둔다. 그러나 그것은 잘 작동합니다.


3

확산을 사용할 수 있습니다 :

sudo apt-get install diffuse
diffuse file1 file2

2
필자는 종종 병합 앵커를 수동으로 설정하는 기능인 하나의 킬러 기능에 Diffuse를 사용합니다. 디렉토리 (아직)를 수행하지는 않지만 개별적이고 지저분한 diff의 경우 앵커 기능이 훌륭합니다.
Sk606

2

당신은 meld 를 시도 할 수 있습니다 .

리포지토리이며 파일 또는 폴더 비교를위한 GUI를 제공합니다.


1
Meld는 diff, btw의 GUI입니다.
Marco Ceppi

1

Eclipse IDE는 비교를 수행하는 경우 약간 무겁지 만 다른 것들 중에서도 그 일을 잘 수행합니다. 2 개의 프로젝트, 경로 또는 파일을 선택하여 서로 비교하고 소스 제어 서버와 동기화 할 수도 있습니다.


1

IMHO FreeFileSync는 Meld보다 매우 우수하고 유용합니다. 빠르고 안정적이며 비용이 많이 드는 동기화를 수행 할 수 있으며 비교 결과를 csv 파일로 내보낼 수도 있습니다.

랜치 패드 링크



0

파일을 비교하려면

File_1.txt
Line1
Line2

File_2.txt
Line1
Line 2

다음 명령을 사용할 수 있습니다 cmp.

cmp -b "File_1.txt" "File_2.txt"

출력은

a b differ: byte 11, line 2 is  62 2  40  

dirs를 비교하려면 (필요한) :

diff 명령을 사용할 수 있습니다 :

diff -r --brief dir1 dir2

man diff

  -r, --recursive
              recursively compare any subdirectories found

   -q, --brief
          report only when files differ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.