두 개의 디렉토리 트리가 주어지면 어떤 파일이 다른지 어떻게 알 수 있습니까?
두 디렉토리 트리의 차이점을 찾으려면 일반적으로 다음을 실행합니다.
diff -r dir1/ dir2/
이것은 해당 파일 간의 차이점을 정확히 출력합니다. 내용이 다른 해당 파일 목록을 얻는 데 관심이 있습니다. 나는 이것이 단순히 명령 줄 옵션을에 전달하는 문제라고 생각 diff
했지만 man 페이지에서 아무것도 찾을 수 없었습니다.
어떤 제안?
Linux라고 말 했으므로 운이 좋습니다 (적어도 사용할 수 있어야하며 언제 추가되었는지 확실하지 않습니다).
diff --brief --recursive dir1/ dir2/ # GNU long options
diff -qr dir1/ dir2/ # common short options
필요한 일을해야합니다.
두 디렉토리에없는 파일의 차이점도 확인하려면 다음을 수행하십시오.
diff --brief --recursive --new-file dir1/ dir2/ # GNU long options
diff -qrN dir1/ dir2/ # common short options
내가 사용하는 명령은 다음과 같습니다.
diff -qr dir1/ dir2/
Mark의 대답과 똑같습니다 :) 그러나 그의 대답은 다른 유형 의 깃발을 사용하기 때문에 나를 괴롭 혔고 그것은 나를 두 번 보게 만들었습니다. Mark의 더 자세한 플래그를 사용하면 다음과 같습니다.
diff --brief --recursive dir1/ dir2/
다른 답변이 완벽하게 받아 들여질 때 게시 한 것에 대해 사과드립니다. 내 자신을 멈출 수 없었습니다.
를 사용 git diff --no-index dir1/ dir2/
하고 싶습니다 . 왜냐하면 색상의 차이를 표시 할 수 있기 때문입니다 (git 구성에 해당 옵션을 설정 한 경우). "less"를 사용하여 긴 페이지 출력의 모든 차이점을 보여주기 때문입니다.
이 두 명령은 기본적으로 요청 된 작업을 수행합니다.
diff --brief --recursive --no-dereference --new-file --no-ignore-file-name-case /dir1 /dir2 > dirdiff_1.txt
rsync --recursive --delete --links --checksum --verbose --dry-run /dir1/ /dir2/ > dirdiff_2.txt
둘 사이의 선택은 dir1과 dir2의 위치에 따라 다릅니다.
디렉터리가 두 개의 개별 드라이브에 있으면 diff가 rsync보다 성능이 뛰어납니다. 그러나 비교 된 두 디렉토리가 동일한 드라이브에 있으면 rsync가 더 빠릅니다. diff는 두 디렉터리에 병렬로 거의 동일한 부하를 가하여 두 드라이브의 부하를 최대화하기 때문입니다.
rsync는 실제로 비교하기 전에 큰 청크의 체크섬을 계산합니다. 이는 I / O 작업을 큰 청크로 그룹화하여 단일 드라이브에서 작업이 수행 될 때보다 효율적인 처리로 이어집니다.
Meld 는 또한 두 디렉토리를 비교하는 훌륭한 도구입니다.
meld dir1/ dir2/
Meld에는 파일 또는 디렉토리를 비교할 수있는 많은 옵션이 있습니다. 두 파일이 다른 경우 파일 비교 모드로 들어가서 정확한 차이점을 쉽게 확인할 수 있습니다.
채널 동포 'billings'(freenode / # centos 명성)가 나와 함께 방법을 공유했습니다.
diff -Naur dir1/ dir2
최종 디렉토리 슬래시를 포함하는 것은 중요하지 않습니다.
또한 -u
diff의 일부 이전 / 서버 버전에서는이 옵션을 사용할 수 없습니다.
diff의 차이 :
# diff -Nar /tmp/dir1 /tmp/dir2/
diff -Nar /tmp/dir1/file /tmp/dir2/file
28a29
> TEST
# diff -qr /tmp/dir1/ /tmp/dir2/
Files /tmp/dir1/file and /tmp/dir2/file differ
Diffoscope 는 훌륭한 명령 줄 기반 디렉터리 비교 도구입니다.
특히 파일 로 비교할 수 있다는 점이 마음에 듭니다 .
여러 종류의 아카이브를 재귀 적으로 풀고 다양한 바이너리 형식을 사람이 읽을 수있는 형식으로 변환하여 비교합니다. 두 개의 tarball, ISO 이미지 또는 PDF를 쉽게 비교할 수 있습니다.
어떤 파일이 다른지뿐만 아니라 어떻게 다른지 알려줍니다.
diff를 찾으려면 다음 명령을 사용하십시오.
diff -qr dir1/ dir2/
-r 은 모든 하위 디렉토리를 비교합니다. -q 는 파일이 다를 때만보고하도록 diff에 지시합니다.
diff --brief dir1/ dir2/
--brief 는 디렉토리에 존재하지 않는 파일을 보여줍니다.
그렇지 않으면
we can use Meld which will show in graphical window its easy to find the difference.
meld dir1/ dir2/
You can also use Rsync
and find
. For find
:
find $FOLDER -type f | cut -d/ -f2- | sort > /tmp/file_list_$FOLDER
But files with the same names and in the same subfolders, but with different content, will not be shown in the lists.
If you are a fan of GUI, you may check Meld that @Alexander mentioned. It works fine in both windows and linux.
'Development Tip' 카테고리의 다른 글
Node.js 모범 사례 예외 처리 (0) | 2020.09.29 |
---|---|
충돌이있는 자식 병합을 실행 취소하는 방법 (0) | 2020.09.29 |
Ruby에서 임의의 문자열을 생성하는 방법 (0) | 2020.09.29 |
Java에서 문자열을 어떻게 비교합니까? (0) | 2020.09.29 |
Mercurial과 Git의 차이점은 무엇입니까? (0) | 2020.09.29 |