Fdupes ile yinelenen dosyalar nasıl silinir?


15

Çalıştırdığımda fdupes30.000'den fazla yinelenen dosya bulur. Bir dosya tutmak ve diğer bazı kopyalarını silmek gerekir (bazıları sistem dosyaları olduğu için). Lütfen her bir yinelenen dosya grubu için "1 veya 2 veya tümü" öğesine basmadan bunu yapmam için bir komut veya komut dosyası verin.

Yanıtlar:


23

Bunu sessizce çalıştırmak istiyorsanız bunu yapabilirsiniz (sadece raf alanı blok depolamada çalışan duples 150 GB temizlemek için kullandım .. £ kerching !!)

fdupes -rdN dir/

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

Dupes silmek yerine çöp kutusuna taşınacak bir seçenek yok mu?
Augustin Riedinger

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

2
@AugustinRiedinger: Boşluklu, fdupes -f . | xargs -rd '\n' -- gvfs-trashözel karakterli dosya adlarınız veya çok sayıda dosyanız varsa daha da iyi olur .
David Foerster

@DavidFoerster hala komut satırınızı bozacak yeni satırlara sahip dosya adlarınız olabilir.
Ruslan

@Ruslan: Bu doğru ancak şu anda fdupesboş sonlandırılmış kayıtlar için bir seçenek sunmuyor, bu yüzden daha iyi bir seçenek yok. Kesinlikle for f in $(fdupes ...)olsa çok daha iyi . : -]
David Foerster

9

fdupes zengin bir CLI'ye sahiptir:

fdupes -r ./stuff > dupes.txt

Ardından, kopyaları dupes.txtsilmek, rahatsız edici dizinleri kontrol etmek ve silmek kadar kolaydı . fdupesayrıca devam ederken kopyaları silmenizi isteyebilir.

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

Komutun çıktısı girilir duplicate.txt.

fdupes yinelenenleri bulmak için dosyaların boyutunu ve MD5 karmasını karşılaştırır.

Ayrıntılı kullanım bilgileri için el fdupeskitabına bakın.


Bir yol buldum. evet 1 | fdupes -rd / mnt / hda5 / midi_files
user84055


2

Bu daha güvenli bir şekilde kullanırdım:

Bir komut dosyası oluşturun ve çoğaltılan dosyaları yeni bir klasöre taşıyın. Orijinal klasörün dışındaki bir klasöre taşırsanız, fdupes çoğaltılan dosyaları ikinci bir taramada bildirmez ve bunları silmek daha güvenli olur.

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

Uzun süredir fslint ve DupeGuru kullandım .

  • FSlint, joker karakter ve diğer temizleme yöntemleriyle seçimi destekler
  • DupeGuru normal ifadeyi destekler

Her ikisi de 10000'den fazla dosya / klasörü işleyebilir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.