답변:
해당 diff
명령을 사용할 수 있습니다 .
diff -bur folder1/ folder2/
이것은 통일 된 문맥으로 공백을 무시하는 재귀 diff를 출력합니다.
-b
공백 변경을 무시하고 -u
3 줄의 버퍼를 제공합니다.
diff -rub folder1/ folder2/
-bur
감기 기후에서 사는 경우 기억하기 쉬운 것입니다.
다른 파일 만 보려는 경우 다음을 사용할 수 있습니다.
diff -qr dir_one dir_two | sort
옵션 "q"는 내용은 다르지만 내용은 다르지만 다른 파일 만 표시하고 "정렬"은 출력을 사전 순으로 정렬합니다.
diff
다른 파일의 각 쌍에. 하나 또는 두 개의 파일 만 다른 경우와 수십 개의 파일이 다른 경우 사용자의 접근 방식은 크게 다릅니다. diff
한 번에 수십 개의 파일을 출력하면 결과가 없어 질 수 있습니다!
-x PATTERN
특정 하위 디렉토리를 제외하도록 명령에 포함시킬 수 있습니다 . 예를 들어, diff -qr repo1 repo2 -x ".git"
두 디렉토리 (repo1 및 repo2)를 비교하지만 각 디렉토리의 .git 폴더에있는 파일은 제외합니다.
GNU diff 인 경우 두 디렉토리를 가리키고 -r 옵션을 사용해야합니다.
그렇지 않으면, 사용해보십시오
for i in $(\ls -d ./dir1/*); do diff ${i} dir2; done
NB 의견 섹션에서 Dennis가 지적한 것처럼 실제로 ls에서 명령 대체를 수행 할 필요는 없습니다. 나는이 작업을 너무 오랫동안 수행하여 자동 조종 장치 에서이 작업을 수행하고 비교를 위해 파일 목록을 가져와야하는 명령을 대체했습니다.
또한 ls의 별칭을 GNU ls에서 일시적으로 비활성화하여 GNU ls가 반환 한 목록에서 색상 형식 정보를 잃어 버리는 '\ ls'를 추가하는 것을 잊었습니다.
ls
.for i in ./dir1/*
다음은 두 폴더의 파일 간 차이점을 보여주는 스크립트입니다. 재귀 적으로 작동합니다. dir1과 dir2를 변경하십시오.
(search() { for i in $1/*; do [ -f "$i" ] && (diff "$1/${i##*/}" "$2/${i##*/}" || echo "files: $1/${i##*/} $2/${i##*/}"); [ -d "$i" ] && search "$1/${i##*/}" "$2/${i##*/}"; done }; search "dir1" "dir2" )
특히 파일의 내용을 비교하지 않고 두 디렉토리에없는 파일 만 확인하려는 경우 다른 명령으로 생성 된 파일 목록을 비교할 수 있습니다.
diff <(find DIR1 -printf '%P\n' | sort) <(find DIR2 -printf '%P\n' | sort) | grep '^[<>]'
-printf '%P\n'
find
출력 경로 앞에 루트 디렉토리를 붙이지 않도록 지시 합니다.
또한 sort
두 호출에서 파일 순서가 동일하도록 추가 했습니다 find
.
grep
끝에서 동일한 입력 라인에 대한 정보를 제거한다.
이 시도:
diff -rq /path/to/folder1 /path/to/folder2
diff
다운로드하여 명령에 액세스 할 수 있습니다 .