2 개의 드라이브에서 고유 한 파일 찾기


1

나는 주로 동일한 내용을 가지고 있지만 완전히 다른 폴더 구조의 2 권을 비교하려고합니다. (약 2 백만 개의 파일).

하나의 폴더에만 파일이 있고 다른 폴더에는없는 파일을보고 싶습니다. 이름.

나는 이것을 시도 :

find /Volumes/1/ /Volumes/2/ -not -empty -type f -printf "%D\t%s\t%f\n" | sort -t$'\t' -k2 -n | uniq -uf1 | sort

아이디어는 장치, 크기 및 이름과 함께 모든 파일 목록을 가져온 다음 모든 중복을 제거하는 것입니다.

...하지만 작동하지 않습니다. 나는 아직도 내 결과에서 두 드라이브에 공통된 파일을 얻는다.

이상적으로는 결과 목록에 전체 경로를 포함하고 싶지만 정렬 / 통합을 엉망으로 만들지 않고 포함시키는 방법을 모르겠습니다.


두 파일이 이름과 크기를 공유하는 경우 두 파일이 동일하다고 실제로 신뢰합니까? 아니면 md5 / sha1 / sha2 검증이 필요합니까?
MariusMatutiae

나는 한 드라이브가 최근에 다른 드라이브와 동기화 되었기 때문에 신뢰하지만 지금은 약간의 혼란이 남아 있습니다. 그 이상 남아있는 스크랩을 찾고 복사해야합니다.
Ze'ev

답변:


0

수정 : 장치를 보존의 필요성에 관한 답변

find dir1/ dir2/ -type f -printf "%D\t%s\t%f\n" | \
    sort -t$'\t' -k2 | \
    uniq -uf2

find /Volumes/1/ /Volumes/2/ -type f -printf "%f\n" | sort | uniq -u 파일 이름으로 만 누락 된 파일을 보여줍니다.

find /Volumes/1/ /Volumes/2/ -type f -printf "%s-%f\n" | sort | uniq -u 파일 이름과 크기를 일치시켜 누락 된 파일을 표시합니다.

두 번째 옵션은 크기 불일치가있는 경우 파일을 두 번 출력합니다. 원하는 것이 아닌 경우 다음과 같이 목록을 다시 채울 수 있습니다.

find /Volumes/1/ /Volumes/2/ -type f -printf "%s\t%f\n" | sort | uniq -u | \
    cut -d$'\t' -f 2|sort|uniq

예, 그렇지만 파일이 어느 드라이브에서 왔는지는 알 수 없습니다. 그것은 기본적으로 내가 가진 것입니다. %D for device ... 파일에있는 볼륨에 대한 정보를 포함시킬 결과가 필요합니다.
Ze'ev

1
@ Ze'ev 내 편집 된 답변을 확인하십시오. 크기가 맞지 않을 경우 중복 된 결과가 필요하다는 것이 확실하지 않았습니다.
GnP

-1

rsync를 -R과 함께 사용 (상대 경로 옵션을 전체 경로로 표시)

rsync -rvcnR --delete path_to_sync/ path_to_orig/

다른 명령 줄 스위치 인 r, v, c 및 n은 rsync에게 자세한 내용은 맨 페이지를 확인하여 두 디렉토리의 자세한 재귀 적 체크섬 기반 동기화를 수행하도록 지시하지만 show : -n

편집 후, 원본 rsync가 파일명의 손상을 야기한 파일의 삭제와 이동을 허용합니다.

찾기를 다음과 같이 변경하십시오.

find /Volume/1/ /Volume/2/ -printf '%f %s\t%D%p\n' | sort -uk1,1 | cut -f 2- -d ' '

printf를 사용하여 file-name 다음에 필요한 필드를 사용하여 첫 번째 필드를 만들고 고유 한 파일의 첫 번째 필드로 정렬 한 다음 고유 한 파일을두고있는 필드 1을 삭제하십시오. 파일 이름에 공백 문자를 사용할 경우에는 구분 기호로 사용했던 공백에 다른 구분 기호를 사용해야합니다.


이게 정말 효과가 있니? OP 클레임은 완전히 다른 폴더에있는 excit bt 파일입니다.
MariusMatutiae

@MariusMatutiae 파일이 rsync를 통해 거기에 놓이면 rsync를 통해 파일을 확인할 수 있습니다.
Antony

그들은 계속 옮겼다. 나는 명백한 중복을 지우고, 휴지통으로 옮기고, 나중에 일부가 잘못 식별되었음을 발견 했으므로 이제 첫 번째 볼륨의 모든 파일이 하나의 큰 폴더에 있습니다. 폴더 구조를 무시하는 'rsync'가 필요합니다. Beyond Compare는 그것을 할 수는 있지만 큰 일을 가로막습니다.
Ze'ev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.