두 개의 다른 디렉토리에 존재하는 Diff 파일
동일한 파일 목록을 가진 두 개의 디렉토리가 있습니다. diff
명령을 사용하여 두 디렉토리에있는 모든 파일을 비교해야합니다 . 간단한 명령 줄 옵션이 있습니까? 아니면 파일 목록을 가져오고 반복하는 셸 스크립트를 작성해야합니까?
해당 diff
명령을 사용할 수 있습니다 .
diff -bur folder1/ folder2/
이것은 통일 된 문맥으로 공백을 무시하는 재귀 diff를 출력합니다.
- b 플래그는 공백을 무시하는 것을 의미합니다.
- u 플래그는 통합 된 컨텍스트 (전후 3 줄)를 의미합니다.
- r 플래그는 재귀를 의미
다른 파일 만 보려는 경우 다음을 사용할 수 있습니다.
diff -qr dir_one dir_two | sort
옵션 "q"는 내용은 다르지만 내용은 다르지만 다른 파일 만 표시하고 "정렬"은 출력을 사전 순으로 정렬합니다.
Diff는 그 옵션 -r
을 가지고 있습니다.
diff -r dir1 dir2
diff
두 파일을 비교할 수있을뿐만 아니라, -r
옵션 을 사용하여 전체 디렉토리 트리를 탐색하여 하위 디렉토리와 각 트리의 비교 가능한 지점에서 발생하는 파일 간의 차이를 재귀 적으로 점검 할 수 있습니다.
$ man diff
...
-r --recursive
Recursively compare any subdirectories found.
...
GNU diff라면 두 디렉토리를 가리키고 -r 옵션을 사용할 수 있습니다.
그렇지 않으면, 사용해보십시오
for i in $(\ls -d ./dir1/*); do diff ${i} dir2; done
NB 의견 섹션에서 Dennis가 지적한 것처럼 실제로 ls에서 명령 대체를 수행 할 필요는 없습니다. 나는이 작업을 너무 오랫동안 수행하여 자동 조종 장치 에서이 작업을 수행하고 비교를 위해 파일 목록을 가져와야하는 명령을 대체했습니다.
또한 ls의 별칭을 GNU ls에서 일시적으로 비활성화하여 GNU ls가 반환 한 목록에서 색상 형식 정보를 잃어 버리는 '\ ls'를 추가하는 것을 잊었습니다.
다음은 두 폴더의 파일 간 차이점을 보여주는 스크립트입니다. 재귀 적으로 작동합니다. 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 -rq /path/to/folder1 /path/to/folder2
참고 URL : https://stackoverflow.com/questions/2019857/diff-files-present-in-two-different-directories
'IT' 카테고리의 다른 글
MySQL에서 최대 두 값을 얻는 방법은 무엇입니까? (0) | 2020.03.26 |
---|---|
time.struct_time 객체를 datetime 객체로 어떻게 변환합니까? (0) | 2020.03.26 |
파이썬에서 부동 숫자를 고정 너비로 포맷하는 방법 (0) | 2020.03.26 |
NumPy에서 빈 배열 / 행렬을 만들려면 어떻게해야합니까? (0) | 2020.03.26 |
`에 대한 ng- 모델 (0) | 2020.03.25 |