Jak znaleźć (i usunąć) zduplikowane pliki

125

Mam obszerną kolekcję muzyki i jest tam kilka duplikatów. Czy jest jakiś sposób na znalezienie duplikatów plików. Przynajmniej wykonując skrót i sprawdzając, czy dwa pliki mają ten sam skrót.

Punkty bonusowe za znalezienie plików o tej samej nazwie oprócz rozszerzenia - myślę, że mam kilka utworów w wersji mp3 i ogg.

Z przyjemnością korzystam z wiersza poleceń, jeśli jest to najłatwiejszy sposób.

Hamish Downer
źródło

Odpowiedzi:

138

Używam fdupesdo tego. Jest to program wiersza polecenia, który można zainstalować z repozytoriów za pomocą sudo apt install fdupes. Możesz to nazwać tak, fdupes -r /dir/ect/orya wydrukuje listę duplikatów. fdupes ma również prostą stronę główną i artykuł w Wikipedii , w którym wymieniono kilka innych programów.

qbi
źródło
7
Ma także opcję „-d”, która pozwala wybrać, którą kopię chcesz zachować, i usuwa pozostałe (lub możesz zachować je wszystkie, jeśli chcesz).
Matthew Crumley,
Jak mogę użyć opcji -d, aby naprawić mój problem tutaj
John McKean Pruitt
Czy możliwe jest, aby fdupes wyświetlał zduplikowane foldery zamiast duplikatów plików?
Anderson Green,
2
Czy możesz wyjaśnić bardziej szczegółowo, jak usunąć wszystkie duplikaty (pozostawiając tylko jedną kopię każdego pliku) w rekurencyjnym drzewie katalogów? Chcę to zrobić automatycznie, to znaczy bez konieczności każdorazowego określania, który plik należy zachować. Powinien po prostu wybrać jeden z duplikatów.
becko
5
fdupes -r . -d -Npowinien zapisać pierwszą instancję i usunąć duplikaty. Właśnie pomyślnie wyczyściłem pojedynczy folder przy użyciu fdupes . -d -Nnierekurencyjnie
Simon B
61

FSlint ma GUI i kilka innych funkcji. Wyjaśnienie algorytmu sprawdzania duplikatów z ich FAQ:

1. exclude files with unique lengths
2. handle files that are hardlinked to each other
3. exclude files with unique md5(first_4k(file))
4. exclude files with unique md5(whole file)
5. exclude files with unique sha1(whole file) (in case of md5 collisions).

fslint Zainstaluj fslint

Dominik
źródło
12
Dzięki. Zauważ, że nazwa polecenia to „fslint-gui”, a narzędzia wiersza poleceń domyślnie nie znajdują się w $ PATH - są w / usr / share / fslint / fslint. Byłem zdezorientowany, gdy nie otrzymałem pomocy na temat tego, w którym pakiecie był, po prostu uruchamiając fslint (przez / usr / lib / command-not-found).
nealmcb,
dokładnie to, co konieczne
Tebe
1
@nealmcb Jeśli używasz sudo apt-get install fslint, instalacja obecnie wpisuje fslint-guiścieżkę, więc mogę ją uruchomić z dowolnego miejsca, po prostu pisząc fslint-gui. Możesz dowiedzieć się, gdzie fslint-guimieszka, pisząc which fslint-gui(wygląda jak skrypt w języku Python).
user29020,
55

Lista programs/scripts/bash-solutions, która może znaleźć duplikaty i uruchomić pod nix:

  1. dupedit : Porównuje wiele plików jednocześnie bez sumowania . Unika porównywania plików ze sobą, gdy wiele ścieżek wskazuje ten sam plik.
  2. dupmerge : działa na różnych platformach (Win32 / 64 z Cygwin, * nix, Linux itp.)
  3. dupseek : Perl z algorytmem zoptymalizowanym pod kątem redukcji odczytów.
  4. fdf : oparty na Perl / c i działa na większości platform (Win32, * nix i prawdopodobnie inne). Wykorzystuje MD5, SHA1 i inne algorytmy sumy kontrolnej
  5. freedups : skrypt powłoki, który przeszukuje wskazane katalogi. Gdy znajdzie dwa identyczne pliki, łączy je ze sobą. Teraz dwa lub więcej plików nadal istnieje w odpowiednich katalogach, ale tylko jedna kopia danych jest przechowywana na dysku; oba wpisy katalogu wskazują te same bloki danych.
  6. fslint : ma interfejs wiersza poleceń i GUI.
  7. liten : Narzędzie wiersza polecenia i biblioteka do deduplikacji Pure Python, wykorzystujące sumy kontrolne md5 i nowatorski algorytm porównywania bajtów. (Linux, Mac OS X, * nix, Windows)
  8. liten2 : Przepisanie oryginalnego Litena, wciąż narzędzie wiersza poleceń, ale z szybszym trybem interaktywnym z wykorzystaniem sum kontrolnych SHA-1 (Linux, Mac OS X, * nix)
  9. rdfind : jeden z niewielu, który uszeregowuje duplikaty na podstawie kolejności parametrów wejściowych (katalogi do skanowania), aby nie usuwać z „oryginalnych / dobrze znanych” źródeł (jeśli podano wiele katalogów). Wykorzystuje MD5 lub SHA1.
  10. rmlint : Szybka wyszukiwarka z interfejsem wiersza poleceń i wieloma opcjami do znalezienia innych kłaczków (używa MD5)
  11. ua : narzędzie wiersza poleceń Unix / Linux, zaprojektowane do pracy z find (i podobnymi).
  12. findrepe : bezpłatne narzędzie wiersza polecenia oparte na Javie, zaprojektowane do wydajnego wyszukiwania zduplikowanych plików, może wyszukiwać w zamkach i słoikach. (GNU / Linux, Mac OS X, * nix, Windows)
  13. fdupe : mały skrypt napisany w Perlu. Wykonuje swoją pracę szybko i wydajnie. 1
  14. ssdeep : identyfikuj prawie identyczne pliki za pomocą Hashing fragmentaryczny wyzwalany kontekstem
v2r
źródło
4
Czy któryś z tych programów jest w stanie znaleźć zduplikowane foldery (nie tylko duplikaty plików?)
Anderson Green
3
@AndersonGreen rmlintmoże znaleźć duplikaty katalogów. rmlint -T dd
oligofren
w przypadku Ubuntu innym sposobem jest otwieranie plików, wyszukiwanie (control-f) danego rozszerzenia (np. mp3), a następnie sortowanie według nazwy pliku; pozwoli to ręcznie usunąć duplikaty, a jednocześnie pokaże lokalizacje duplikatów.
axd
6

Jeśli twoje zadanie deduplikacji ma związek z muzyką, najpierw uruchom aplikację Picard , aby poprawnie zidentyfikować i oznaczyć swoją muzykę (aby znaleźć duplikaty plików .mp3 / .ogg, nawet jeśli ich nazwy są niepoprawne). Pamiętaj, że Picard jest również dostępny jako pakiet Ubuntu.

To zrobione, na podstawie musicip_puidtagu możesz łatwo znaleźć wszystkie swoje zduplikowane utwory.

ΤΖΩΤΖΙΟΥ
źródło
4

Innym skryptem wykonującym tę pracę jest rmdupe . Ze strony autora:

rmdupe używa standardowych poleceń Linuksa do wyszukiwania w określonych folderach duplikatów plików, niezależnie od nazwy pliku lub rozszerzenia. Przed usunięciem zduplikowanych kandydatów są one porównywane bajt po bajcie. rmdupe może także sprawdzać duplikaty w jednym lub większej liczbie folderów referencyjnych, może usuwać pliki zamiast je usuwać, pozwala na niestandardowe polecenie usuwania i może ograniczyć wyszukiwanie do plików o określonym rozmiarze. rmdupe zawiera tryb symulacji, który zgłasza, co zostanie zrobione dla danego polecenia bez faktycznego usuwania plików.

girardengo
źródło
3

Czy próbowałeś

finddup

lub

finddup -l

Chyba działa dobrze.

kserostomus
źródło
2

W przypadku powiązanej z muzyką zdublowanej identyfikacji i usuwania Picard i Jaikoz przez http://musicbrainz.org/ to najlepsze rozwiązanie. Jaikoz Wierzę, że automatycznie oznacza muzykę na podstawie danych pliku utworu. Nie potrzebujesz nawet nazwy utworu, aby go zidentyfikować i przypisać do niego wszystkie metadane. Chociaż darmowa wersja może oznaczać tylko ograniczoną liczbę utworów w jednym uruchomieniu, ale możesz uruchomić ją tyle razy, ile chcesz.

Yathi
źródło
2

Używam komparator - sudo apt-get install komparator( Ubuntu 10.04+ ) - jako GUI-narzędzie do wyszukiwania duplikatów w trybie ręcznym.

N0rbert
źródło