Comment supprimer des fichiers en double avec fdupes?

15

Lorsque je l'exécute, fdupesil trouve plus de 30 000 fichiers en double. J'ai besoin de conserver un fichier et de supprimer tous les autres doublons (car certains d'entre eux sont des fichiers système). Veuillez me donner une commande ou un script pour le faire sans appuyer sur "1 ou 2 ou tous" pour chaque groupe de fichiers en double.

user84055
la source

Réponses:

23

Vous pouvez le faire si vous voulez l'exécuter en silence (je viens de l'utiliser pour effacer 150 Go de dupes fonctionnant sur le stockage en rack rack .. £ kerching !!)

fdupes -rdN dir/

r - recursive
d - preserver first file, delete other dupes
N - run silently (no prompt)
user288359
la source
N'y a-t-il pas une option qui passerait à la corbeille au lieu de supprimer les dupes?
Augustin Riedinger
2
Didfor f in $(fdupes -f .); do gvfs-trash $f; done
Augustin Riedinger
2
@AugustinRiedinger: Encore mieux serait fdupes -f . | xargs -rd '\n' -- gvfs-trashd'avoir des noms de fichiers avec des espaces et des caractères spéciaux ou de nombreux fichiers.
David Foerster
@DavidFoerster, vous pouvez toujours avoir des noms de fichiers avec des sauts de ligne, ce qui cassera votre commande.
Ruslan
@Ruslan: C'est exact, mais pour le moment fdupesne propose pas d'option pour les enregistrements terminés par null, il n'y a donc pas de meilleure option. C'est nettement mieux que ça for f in $(fdupes ...). : -]
David Foerster
9

fdupes possède une CLI riche:

fdupes -r ./stuff > dupes.txt

Ensuite, la suppression des doublons était aussi simple que la vérification dupes.txtet la suppression des répertoires incriminés. fdupespeut également vous inviter à supprimer les doublons au fur et à mesure.

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

La sortie de la commande entre duplicate.txt.

fdupes comparera la taille et le hachage MD5 des fichiers pour trouver les doublons.

Consultez la fdupespage de manuel pour des informations d'utilisation détaillées.

Vente Amol
la source
J'ai trouvé un moyen. oui 1 | fdupes -rd / mnt / hda5 / midi_files
user84055
2

J'utiliserais cette manière plus sûre:

Créez un script et déplacez les fichiers dupliqués vers un nouveau dossier. Si vous déplacez vers un dossier en dehors du dossier d'origine, fdupes ne signalera pas les fichiers dupliqués lors d'une deuxième analyse, et il sera plus sûr de les supprimer.

#!/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
LinuxHelper
la source
1

J'utilise fslint et DupeGuru depuis un certain temps.

  • FSlint prend en charge la sélection par caractères génériques et autres méthodes de nettoyage
  • DupeGuru soutient regex

Les deux peuvent gérer> 10000 fichiers / dossiers

Seb
la source