¿Cómo eliminar archivos duplicados con fdupes?

15

Cuando lo ejecuto fdupes, encuentra más de 30,000 archivos duplicados. Necesito mantener un archivo y eliminar todos los demás duplicados (porque algunos de ellos son archivos de sistema). Por favor, dame un comando o script para hacer esto sin presionar "1 o 2 o todos" para cada grupo de archivos duplicados.

usuario84055
fuente

Respuestas:

23

Puede hacer esto si desea ejecutar esto en silencio (lo acabo de usar para borrar 150 GB de duplicados que se ejecutan en el almacenamiento en bloque de espacio en bastidor ... ¡¡¡kerching !!)

fdupes -rdN dir/

r - recursive
d - preserver first file, delete other dupes
N - run silently (no prompt)
usuario288359
fuente
¿No hay una opción que se movería a la basura en lugar de eliminar engañados?
Augustin Riedinger
2
Didfor f in $(fdupes -f .); do gvfs-trash $f; done
Augustin Riedinger
2
@AugustinRiedinger: Aún mejor sería fdupes -f . | xargs -rd '\n' -- gvfs-trashsi tienes nombres de archivos con espacios y caracteres especiales o muchos archivos.
David Foerster
@DavidFoerster todavía puede tener nombres de archivo con nuevas líneas, lo que romperá su comando.
Ruslan
@Ruslan: Eso es correcto pero por el momento fdupesno proporciona una opción para registros terminados en nulo, por lo que no hay una mejor opción. Definitivamente es mucho mejor que for f in $(fdupes ...)eso. : -]
David Foerster
9

fdupes tiene una rica CLI:

fdupes -r ./stuff > dupes.txt

Luego, eliminar los duplicados fue tan fácil como verificar dupes.txty eliminar los directorios ofensivos. fdupestambién puede solicitarle que elimine los duplicados a medida que avanza.

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

La salida del comando entra duplicate.txt.

fdupes comparará el tamaño y el hash MD5 de los archivos para encontrar duplicados.

Consulte la página de fdupesmanual para obtener información detallada sobre el uso.

Venta de Amol
fuente
Encontre un camino. si 1 | fdupes -rd / mnt / hda5 / midi_files
user84055
Ver también superuser.com/a/691551/122096
x29a
2

Usaría esta forma más segura:

Cree un script y mueva los archivos duplicados a una nueva carpeta. Si se mueve a una carpeta fuera de la carpeta original, fdupes no informará los archivos duplicados en un segundo escaneo, y será más seguro eliminarlos.

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

He usado fslint y DupeGuru por bastante tiempo.

  • FSlint admite la selección mediante comodines y otros métodos de limpieza.
  • DupeGuru admite expresiones regulares

Ambos pueden manejar> 10000 archivos / carpetas

seb
fuente