fdupes로 중복 파일을 삭제하는 방법은 무엇입니까?


15

내가 실행 fdupes하면 30,000 개가 넘는 중복 파일이 발견됩니다. 하나의 파일을 유지하고 다른 모든 복제본을 삭제해야합니다 (그중 일부는 시스템 파일이기 때문에). 각 중복 파일 그룹마다 "1 또는 2 또는 모두"를 누르지 않고이 작업을 수행하는 명령 또는 스크립트를 제공하십시오.

답변:


23

이것을 자동으로 실행하려면이 작업을 수행 할 수 있습니다 (랙 스페이스 블록 스토리지에서 실행되는 150GB의 듀피를 지우는 데 사용했습니다 .. £ kerching !!)

fdupes -rdN dir/

r - recursive
d - preserver first file, delete other dupes
N - run silently (no prompt)

듀피를 삭제하는 대신 휴지통으로 이동하는 옵션이 없습니까?
Augustin Riedinger

2
Didfor f in $(fdupes -f .); do gvfs-trash $f; done
Augustin Riedinger

2
@ AugustinRiedinger : fdupes -f . | xargs -rd '\n' -- gvfs-trash공백과 특수 문자가 있거나 파일이 많은 파일 이름 이 있으면 더 좋습니다 .
David Foerster 2018 년

@DavidFoerster 계속 줄 바꿈 파일 이름이 있으면 명령이 중단 될 수 있습니다.
Ruslan

@Ruslan : 맞습니다. 현재 fdupes널 종료 레코드에 대한 옵션을 제공하지 않으므로 더 나은 옵션이 없습니다. for f in $(fdupes ...)그래도 훨씬 낫습니다 . :-]
David Foerster

9

fdupes 풍부한 CLI가 있습니다.

fdupes -r ./stuff > dupes.txt

그런 다음 복제본을 dupes.txt삭제하는 것은 문제가있는 디렉토리 를 확인 하고 삭제하는 것만 큼 ​​쉽습니다 . fdupes또한 진행하면서 복제본을 삭제하라는 메시지가 표시 될 수 있습니다.

fdupes -r /home/user > /home/user/duplicate.txt

명령의 출력은로 들어갑니다 duplicate.txt.

fdupes 중복 파일을 찾기 위해 파일의 크기와 MD5 해시를 비교합니다.

자세한 사용법 정보 는 fdupes맨 페이지 를 확인하십시오 .


방법을 찾았습니다. 예 1 | fdupes -rd / mnt / hda5 / midi_files
user84055


2

나는 더 안전한 방법을 사용할 것입니다 :

스크립트를 작성하고 복제 된 파일을 새 폴더로 이동하십시오. 원래 폴더 외부의 폴더로 이동하면 fdupes는 두 번째 스캔에서 복제 된 파일을보고하지 않으므로 삭제하는 것이 더 안전합니다.

#!/bin/bash

# Save default separator definitions
oIFS=$IFS
# define new line as a separator, filenames can have spaces
IFS=$'\n';

# For each file (f) listed as duplicated by fdupes, recursively
  for f in `fdupes -r -f .`
  do
    # Log the files I'm moving
    echo "Moving $f to folder Duplicates" >> ~/log.txt
    # Move the duplicated file, keeping the original in the original folder
    mv $f Duplicates/
  done

# restore default separator definitions
IFS=$oIFS

1

나는 꽤 오랫동안 fslintDupeGuru 를 사용 했습니다.

  • FSlint는 와일드 카드 및 기타 정리 방법에 의한 선택을 지원합니다
  • DupeGuru는 정규식을 지원합니다

둘 다 10000 개 이상의 파일 / 폴더를 처리 할 수 ​​있습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.