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.

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.


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


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

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.


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.



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.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.