Comment trouver (et supprimer) les fichiers en double

125

J'ai une grande collection de musique et il y a quelques copies. Est-il possible de trouver des fichiers en double? Au minimum, faites un hachage et voyez si deux fichiers ont le même hachage.

Des points bonus pour la recherche de fichiers portant le même nom en plus de l’extension - je pense avoir des chansons avec les versions au format mp3 et ogg.

Je suis heureux d'utiliser la ligne de commande si c'est le moyen le plus simple.

Hamish Downer
la source

Réponses:

138

Je l'utilise fdupespour cela. C'est un programme en ligne de commande qui peut être installé à partir des dépôts avec sudo apt install fdupes. Vous pouvez l'appeler comme fdupes -r /dir/ect/oryceci et une liste de dupes sera imprimée. fdupes a aussi une simple page d'accueil et un article Wikipedia , qui énumère quelques programmes supplémentaires.

qbi
la source
7
Il possède également une option "-d" qui vous permet de choisir la copie que vous souhaitez conserver et de supprimer les autres (ou de les conserver si vous le souhaitez).
Matthew Crumley le
Comment puis-je utiliser l'option -d pour résoudre mon problème ici?
John McKean Pruitt
Est-il possible pour fdupes de lister les dossiers en double au lieu de fichiers en double?
Anderson Green
2
Pouvez-vous expliquer plus en détail comment supprimer tous les doublons (en ne laissant qu'une seule copie de chaque fichier) dans une arborescence de répertoires récursive? Je veux le faire automatiquement, c'est-à-dire sans avoir à spécifier à chaque fois quel fichier conserver. Il suffit de sélectionner l'un des doublons.
Becko
5
fdupes -r . -d -Ndevrait sauver la première instance et supprimer les dupes. Je viens d'effacer un seul dossier avec une utilisation fdupes . -d -Nnon récursive
Simon B
61

FSlint a une interface graphique et quelques autres fonctionnalités. L'explication de l'algorithme de vérification des doublons de leur 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).

sls Installer fslint

Dominik
la source
12
Merci. Notez que le nom de la commande est "fslint-gui" et que les outils de ligne de commande ne sont pas dans $ PATH par défaut - ils sont dans / usr / share / fslint / fslint. J'étais confus de ne pas obtenir d'aide sur le paquet dans lequel il se trouvait en exécutant simplement fslint (via / usr / lib / command-not-found).
Nealmcb
exactement ce qui est nécessaire
Tebe
1
@nealmcb Si vous utilisez sudo apt-get install fslint, l'installation est actuellement mise fslint-guidans le chemin et je peux donc l'exécuter n'importe où en tapant simplement fslint-gui. Vous pouvez trouver où fslint-guihabite en tapant which fslint-gui(cela ressemble à un script Python).
user29020
55

Liste de programs/scripts/bash-solutions, qui peut trouver des doublons et courir sous nix:

  1. dupedit : Compare plusieurs fichiers à la fois sans checksum. Évite de comparer des fichiers avec eux-mêmes lorsque plusieurs chemins pointent vers le même fichier.
  2. dupmerge : fonctionne sur diverses plateformes (Win32 / 64 avec Cygwin, * nix, Linux, etc.)
  3. dupseek : Perl avec algorithme optimisé pour réduire les lectures.
  4. fdf : basé sur Perl / c et s’appuyant sur la plupart des plateformes (Win32, * nix et probablement d’autres). Utilise MD5, SHA1 et d'autres algorithmes de somme de contrôle
  5. freedups : script shell, qui effectue une recherche dans les répertoires que vous spécifiez. Lorsqu'il trouve deux fichiers identiques, il les lie ensemble. Maintenant, les deux fichiers ou plus existent toujours dans leurs répertoires respectifs, mais une seule copie des données est stockée sur le disque; les deux entrées du répertoire pointent sur les mêmes blocs de données.
  6. fslint : possède une interface de ligne de commande et une interface graphique.
  7. liten : outil de ligne de commande de déduplication Python Pure et bibliothèque utilisant les sommes de contrôle md5 et un nouvel algorithme de comparaison d'octets. (Linux, Mac OS X, * nix, Windows)
  8. liten2 : une réécriture du liten d'origine, toujours un outil de ligne de commande mais avec un mode interactif plus rapide utilisant les sommes de contrôle SHA-1 (Linux, Mac OS X, * nix)
  9. rdfind : L'un des rares qui classe les doublons en fonction de l'ordre des paramètres d'entrée (répertoires à analyser) afin de ne pas supprimer les sources "originales / connues" (si plusieurs répertoires sont donnés). Utilise MD5 ou SHA1.
  10. rmlint : Fast Finder avec une interface en ligne de commande et de nombreuses options pour rechercher d'autres peluches (utilise MD5)
  11. ua : outil de ligne de commande Unix / Linux, conçu pour fonctionner avec find (et ainsi de suite).
  12. findrepe : outil de ligne de commande Java gratuit conçu pour une recherche efficace des fichiers en double, il peut effectuer une recherche dans des zips et des fichiers JAR (GNU / Linux, Mac OS X, * nix, Windows).
  13. fdupe : un petit script écrit en Perl. Faire son travail rapidement et efficacement. 1
  14. ssdeep : identifie les fichiers presque identiques à l'aide du hachage par fragmentation déclenchée par contexte
v2r
la source
4
Certains de ces programmes sont-ils en mesure de trouver des dossiers en double (pas seulement des fichiers en double?)
Anderson Green
3
@AndersonGreen rmlintpeut trouver des répertoires en double. rmlint -T dd
oligofren
pour Ubuntu, une autre méthode consiste à ouvrir Fichiers, rechercher (control-f) une extension donnée (par exemple .mp3), puis trier par nom de fichier; cela permettra de supprimer les doublons à la main tout en affichant les emplacements des doublons.
axd
6

Si votre tâche est Déduplication la musique liée, exécutez d' abord la picard application pour identifier correctement et étiqueter votre musique ( de sorte que vous trouverez les fichiers en double .mp3 / ogg même si leurs noms sont incorrects). Notez que picard est également disponible sous forme de paquet Ubuntu.

Cela fait, en fonction de la musicip_puidbalise, vous pouvez facilement trouver toutes vos chansons en double.

ΤΖΩΤΖΙΟΥ
la source
4

Un autre script qui fait ce travail est rmdupe . De la page de l'auteur:

rmdupe utilise les commandes linux standard pour rechercher des fichiers en double dans les dossiers spécifiés, quel que soit le nom du fichier ou son extension. Avant que les candidats en double ne soient supprimés, ils sont comparés octet par octet. rmdupe peut également vérifier les doublons par rapport à un ou plusieurs dossiers de référence, peut supprimer des fichiers au lieu de les supprimer, permet une commande de suppression personnalisée et peut limiter sa recherche aux fichiers de la taille spécifiée. rmdupe inclut un mode de simulation qui indique ce qui sera fait pour une commande donnée sans supprimer aucun fichier.

Girardengo
la source
3

As-tu essayé

finddup

ou

finddup -l

Je suppose que cela fonctionne bien.

xérostome
la source
2

Pour les doublons liés à la musique, l’identification et la suppression de Picard et Jaikoz par http://musicbrainz.org/ est la meilleure solution. Je crois que Jaikoz marque automatiquement votre musique en fonction des données du fichier de la chanson. Vous n'avez même pas besoin du nom de la chanson pour l'identifier et lui attribuer toutes les métadonnées. Bien que la version gratuite ne puisse étiqueter qu’un nombre limité de chansons en une fois, vous pouvez l’exécuter autant de fois que vous le souhaitez.

Yathi
la source
2

J'utilise komparator - sudo apt-get install komparator( Ubuntu 10.04+ ) - comme outil graphique pour rechercher des doublons en mode manuel.

Nobert
la source