¿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.

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)

¿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.


Encontre un camino. si 1 | fdupes -rd / mnt / hda5 / midi_files
user84055


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

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.