Як видалити дублікати файлів за допомогою fdupes?


15

Коли я запускаю, fdupesвін виявляє понад 30 000 копій файлів. Мені потрібно зберегти один файл і видалити всі інші дублікати (адже деякі з них є системними файлами). Будь ласка, дайте мені команду чи сценарій зробити це, не натискаючи "1 або 2 або всі" для кожної групи повторюваних файлів.

Відповіді:


23

Ви можете це зробити, якщо ви хочете запустити це безшумно (я тільки що використовував його для очищення 150 Гб дупе, що працює на сховищі блоків стійки. £ керчінг !!)

fdupes -rdN dir/

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

Хіба не існує варіанта, який перемістився б у сміття замість видалення мандатів?
Августин Рідінгер

2
Зробивfor f in $(fdupes -f .); do gvfs-trash $f; done
Августин Рідінгер

2
@AugustinRiedinger: Ще краще було б, fdupes -f . | xargs -rd '\n' -- gvfs-trashякщо у вас є імена файлів із пробілами та спеціальними символами чи багатьма файлами.
Девід Фоерстер

@DavidFoerster у вас все ще можуть бути назви файлів з новими рядками, що порушить вашу команду.
Руслан

@Ruslan: Це правильно, але на даний момент fdupesне передбачено опції для запису, що припиняються, тому немає кращого варіанту. Це, безумовно, набагато краще, ніж for f in $(fdupes ...)все-таки. : -]
Девід Фоерстер

9

fdupes має багату CLI:

fdupes -r ./stuff > dupes.txt

Тоді видалення дублікатів було таким же простим, як перевірка dupes.txtта видалення каталогів, які порушують право. fdupesтакож може запропонувати вам видалити копії, коли ви йдете далі.

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

Виводиться команда duplicate.txt.

fdupes порівняємо розмір і хеш MD5 файлів, щоб знайти дублікати.

Перевірте fdupesсторінку керівництва для отримання більш докладної інформації про використання.


Я знайшов спосіб. так 1 | fdupes -rd / mnt / hda5 / midi_files
user84055

Дивіться також superuser.com/a/691551/122096
x29a

2

Я б застосував цей безпечніший спосіб:

Створіть сценарій та перемістіть дублювані файли у нову папку. Якщо ви перейдете до папки за межами оригінальної папки, fdupes не буде повідомляти про повторювані файли при повторному скануванні, і їх безпечніше буде видалити.

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

Я використовую fslint та DupeGuru досить давно.

  • FSlint підтримує вибір за допомогою підстановки та інших методів очищення
  • DupeGuru підтримує регулярний вираз

Обидва можуть обробляти> 10000 файлів / папок

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.