डुप्लिकेट फ़ाइलों को 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
अगस्तिन Riedinger

2
@AugustinRiedinger: इससे भी बेहतर होगा fdupes -f . | xargs -rd '\n' -- gvfs-trashकि आपके पास स्पेस और स्पेशल कैरेक्टर या कई फाइलों के साथ फाइल के नाम हों।
डेविड फ़ॉस्टर

@DavidFoerster में आपके पास अभी भी नए नाम के साथ फाइलनाम हो सकते हैं, जो आपकी कमांड को तोड़ देगा।
रुस्लान

@Ruslan: यह सही है, लेकिन इस समय fdupesअशक्त रिकॉर्ड के लिए एक विकल्प प्रदान नहीं करता है, इसलिए कोई बेहतर विकल्प नहीं है। for f in $(fdupes ...)हालांकि यह निश्चित रूप से बहुत बेहतर है । : -]
डेविड फ़ॉस्टर

9

fdupes एक समृद्ध सीएलआई है:

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 regex का समर्थन करता है

दोनों> 10000 फ़ाइलों / फ़ोल्डरों को संभाल सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.