Des outils Linux pour trouver des fichiers en double?

13

J'ai un ensemble grand et croissant de fichiers texte, qui sont tous assez petits (moins de 100 octets). Je veux différencier chaque paire de fichiers possible et noter quels sont les doublons. Je pourrais écrire un script Python pour ce faire, mais je me demande s'il existe un outil de ligne de commande Linux existant (ou peut-être une simple combinaison d'outils) qui ferait cela?

Mise à jour (en réponse au commentaire de mfinni ): Les fichiers sont tous dans un seul répertoire, donc ils ont tous des noms de fichiers différents. (Mais ils ont tous une extension de nom de fichier en commun, ce qui facilite leur sélection avec un caractère générique.)

Daryl Spitzer
la source
Je suppose que les noms de fichiers ne sont pas des doublons, seulement le contenu?
mfinni
pixelbeat.org/fslint si vous recherchez le contenu ci-dessus le lien peut vous y aider. :)
Rajat

Réponses:

22

Il y a les fdupes . Mais j'utilise généralement une combinaison defind . -type f -exec md5sum '{}' \; | sort | uniq -d -w 36

Hubert Kario
la source
1
Cette variation a fonctionné pour moi: find . -name "*.csv" | xargs md5sum | sort | uniq -D -w 34 (j'ai utilisé uniq -D, et je préfère xargs pour trouver -exec.)
Daryl Spitzer
+1 Je n'étais pas au courant des fdupes, cet outil semble très utile.
Zoredache
3
@Daryl: Une utilisation xargscomme celle-ci ne fonctionne pas pour les noms de fichiers avec des blancs, -execmais l' utilisation le fait cependant. L'utilisation -type fcomme argument supplémentaire pour find(peut être utilisé avec -name) limite la recherche aux fichiers.
fuenfundachtzig
+1 pour fdupes, car il est également rapide pour les énormes fichiers binaires.
Bengt
À de rares occasions, j'ai eu des xargs qui ne fonctionnaient pas (se bloquant après une certaine quantité de fichiers traités) mais pas trouvé -exec qui se réveillait tout le temps. @fuenfundachtzig, on peut utiliser xargs -0 --delimiter = "\ n" pour gérer ce type de fichiers.
ychaouche
6

Eh bien, il y a FSlint - que je n'ai pas utilisé pour ce cas particulier, mais je devrais pouvoir le gérer: http://en.flossmanuals.net/FSlint/Introduction

truqueur
la source
+1 pour FSlint. Interface très intuitive et options de personnalisation puissantes.
Glutanimate
3

Vous ne voulez certainement pas différencier chaque paire de fichiers. Vous voudrez probablement utiliser quelque chose comme md5sums pour obtenir toutes les sommes de contrôle de tous les fichiers et les diriger vers un autre outil qui ne fera que rapporter des sommes de contrôle en double.

Zoredache
la source
2
Vous pouvez réduire le nombre de md5sums calculé en calculant uniquement les md5sums pour les fichiers d'une taille pour laquelle il existe plusieurs fichiers de cette taille. Donc, pour tous les fichiers d'une taille unique en octets, vous n'avez pas besoin d'une somme md5, car ils ne peuvent pas être des doublons de quoi que ce soit.
tomsv