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.