Come eliminare i file duplicati con fdupes?


15

Quando eseguo fdupestrova più di 30.000 file duplicati. Devo conservare un file ed eliminare tutti gli altri duplicati (perché alcuni di essi sono file di sistema). Per favore, dammi un comando o uno script per farlo senza premere "1 o 2 o tutti" per ogni singolo gruppo di file duplicati.

Risposte:


23

Puoi farlo se vuoi eseguirlo in modo silenzioso (l'ho appena usato per cancellare 150 GB di duplicati in esecuzione su spazio di archiviazione di blocchi di rack .. £ kerching !!)

fdupes -rdN dir/

r - recursive
d - preserver first file, delete other dupes
N - run silently (no prompt)

Non esiste un'opzione che potrebbe spostarsi nel cestino invece di eliminare i duplicati?
Augustin Riedinger,

2
Fattofor f in $(fdupes -f .); do gvfs-trash $f; done
Augustin Riedinger il

2
@AugustinRiedinger: sarebbe ancora meglio fdupes -f . | xargs -rd '\n' -- gvfs-trashse si hanno nomi di file con spazi e caratteri speciali o molti file.
David Foerster,

@DavidFoerster potresti avere ancora nomi di file con nuove righe, che interromperanno il tuo comando.
Ruslan,

@Ruslan: è corretto, ma al momento fdupesnon fornisce un'opzione per i record con terminazione nulla, quindi non esiste un'opzione migliore. È decisamente molto meglio di quanto for f in $(fdupes ...)però. : -]
David Foerster,

9

fdupes ha una ricca CLI:

fdupes -r ./stuff > dupes.txt

Quindi, eliminare i duplicati è stato facile come controllare dupes.txted eliminare le directory offensive. fdupespuò anche chiederti di eliminare i duplicati mentre procedi.

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

L'output del comando entra duplicate.txt.

fdupes confronterà le dimensioni e l'hash MD5 dei file per trovare i duplicati.

Controlla la fdupesmanpage per informazioni dettagliate sull'uso.


Ho trovato un modo. si 1 | fdupes -rd / mnt / hda5 / midi_files
user84055


2

Vorrei usare questo modo più sicuro:

Crea uno script e sposta i file duplicati in una nuova cartella. Se ci si sposta in una cartella esterna alla cartella originale, fdupes non riporterà i file duplicati in una seconda scansione e sarà più sicuro eliminarli.

#!/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

1

Ho usato fslint e DupeGuru per un bel po 'di tempo.

  • FSlint supporta la selezione tramite caratteri jolly e altri metodi di pulizia
  • DupeGuru supporta regex

Entrambi possono gestire> 10000 file / cartelle

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.