Jak usunąć zduplikowane pliki za pomocą fdupes?

15

Po uruchomieniu fdupesznajduje ponad 30 000 zduplikowanych plików. Muszę zachować jeden plik i usunąć wszystkie pozostałe duplikaty (ponieważ niektóre z nich to pliki systemowe). Proszę dać mi polecenie lub skrypt, aby to zrobić bez naciskania „1 lub 2 lub wszystkie” dla każdej grupy duplikatów plików.

użytkownik84055
źródło

Odpowiedzi:

23

Możesz to zrobić, jeśli chcesz uruchomić to po cichu (właśnie użyłem go, aby usunąć 150 GB duplikatów działających w pamięci blokowej rackspace .. £ kerching !!)

fdupes -rdN dir/

r - recursive
d - preserver first file, delete other dupes
N - run silently (no prompt)
użytkownik 288359
źródło
Czy nie ma opcji, która przeniósłaby się do kosza zamiast usuwania duplikatów?
Augustin Riedinger
2
Czyfor f in $(fdupes -f .); do gvfs-trash $f; done
Augustin Riedinger
2
@AugustinRiedinger: Jeszcze lepiej byłoby, fdupes -f . | xargs -rd '\n' -- gvfs-trashjeśli masz nazwy plików ze spacjami i znakami specjalnymi lub wiele plików.
David Foerster,
@DavidFoerster nadal możesz mieć nazwy plików z nowymi liniami, co złamie twoje polecenie.
Ruslan
@ Ruslan: To prawda, ale w tej chwili fdupesnie zapewnia opcji dla rekordów zakończonych zerem , więc nie ma lepszej opcji. Jest zdecydowanie lepszy niż for f in $(fdupes ...)chociaż. : -]
David Foerster
9

fdupes ma bogaty interfejs CLI:

fdupes -r ./stuff > dupes.txt

Następnie usunięcie duplikatów było tak proste, jak sprawdzenie dupes.txti usunięcie szkodliwych katalogów. fdupesmoże również monitować o usunięcie duplikatów w miarę postępów.

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

Dane wyjściowe polecenia wchodzą duplicate.txt.

fdupes porówna rozmiar i skrót MD5 plików, aby znaleźć duplikaty.

Sprawdź stronę fdupespodręcznika, aby uzyskać szczegółowe informacje na temat użytkowania.

Sprzedaż Amol
źródło
Znalazłem drogę. tak 1 | fdupes -rd / mnt / hda5 / midi_files
user84055,
Zobacz także superuser.com/a/691551/122096
x29a
2

Korzystałbym z tego bezpieczniejszego sposobu:

Utwórz skrypt i przenieś zduplikowane pliki do nowego folderu. Jeśli przejdziesz do folderu poza oryginalnym folderem, fdupes nie zgłosi zduplikowanych plików podczas drugiego skanowania i bezpieczniej będzie je usunąć.

#!/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
źródło
1

Używam fslint i DupeGuru od dłuższego czasu.

  • FSlint obsługuje selekcję za pomocą symboli wieloznacznych i innych metod czyszczenia
  • DupeGuru obsługuje wyrażenia regularne

Oba mogą obsłużyć> 10000 plików / folderów

seb
źródło