अपने कंप्यूटर से डुप्लिकेट छवि फ़ाइलों को हटाने के लिए सबसे अच्छा तरीका क्या है?


14

मेरे पास अपने विंडोज कंप्यूटर पर बहुत सारे डुप्लिकेट इमेज फाइल्स हैं, अलग-अलग सबफोल्डर्स में और अलग-अलग फाइल नामों के साथ।

डुप्लिकेट को हटाने के लिए आप किस पायथन स्क्रिप्ट या फ्रीवेयर प्रोग्राम की सिफारिश करेंगे?

(मैंने इस तरह के प्रश्न को पढ़ा है , लेकिन पोस्टर में अलग-अलग फ़ाइल आकारों के दृश्य डुप्लिकेट के बारे में पूछा गया है। मेरा अलग-अलग फ़ाइल नामों के साथ सटीक डुप्लिकेट हैं।)


2
ध्यान रखें कि भले ही सभी पिक्सेल समान हों, फिर भी उनके पास अलग-अलग EXIF ​​जानकारी हो सकती है (कुछ चरणों में छवियों को नियंत्रित करने वाले कार्यक्रमों द्वारा संशोधित) जो कि वर्तमान में प्रस्तावित समाधानों के साथ समस्याओं का सामना करेंगे।
user12889

जवाबों:


17

MD5 रकम पर भरोसा मत करो।

MD5 रकम डुप्लिकेट की जांच करने का एक विश्वसनीय तरीका नहीं है, वे केवल मतभेदों की जांच करने का एक तरीका है।

संभावित उम्मीदवार डुप्लिकेट खोजने के लिए MD5 का उपयोग करें , और फिर MD5 साझा करने वाले प्रत्येक जोड़े के लिए

  1. दोनों फाइलों को खोलता है
  2. एक अलग होने तक उन फ़ाइलों में आगे देखता है।

यह देखकर कि मैं भोले-भाले लोगों के साथ डुप्लिकेट पहचान दर्ज करने के लिए अपवित्र हो रहा हूं, यदि आप पूरी तरह से हैश एल्गोरिथ्म पर भरोसा करने जा रहे हैं, तो भलाई के लिए, SHA256 या SHA512 जैसे कुछ मुश्किल का उपयोग करें, कम से कम आप संभावना को कम कर देंगे अधिक बिट्स की जाँच करके एक उचित डिग्री। टकराव की स्थिति के लिए MD5 अत्यधिक कमजोर है।

मैं लोगों को मेलिंग सूचियों को 'फाइल चेक' शीर्षक से पढ़ने की सलाह भी देता हूं: http://london.pm.org/pipermail/london.pm/Week-of-Mon-20080714/thread.html

यदि आप कहते हैं "MD5 विशिष्ट रूप से सभी फ़ाइलों की विशिष्ट पहचान कर सकता है" तो आपके पास एक तर्क त्रुटि है।

मानों की एक श्रेणी, लंबाई में 40,000 बाइट्स से लंबाई में 100,000,000,000 बाइट्स को देखते हुए अलग-अलग लंबाई की, कि श्रृंखला के लिए उपलब्ध संयोजनों की कुल संख्या बहुत MD5 द्वारा प्रतिनिधित्व मूल्यों की संभावित संख्या, लंबाई की एक मात्र 128 बिट पर में वजन अधिक है।

प्रतिनिधि 2 ^ केवल 2 ^ 128 संयोजनों के साथ 100,000,000,000 संयोजन? मुझे लगता है कि संभावना नहीं है।

कम से कम रास्ता

डुप्लिकेट से खरपतवार निकालने के लिए सबसे कम भोला तरीका और सबसे तेज़ तरीका निम्नानुसार है।

  1. आकार के अनुसार : विभिन्न आकार वाली फाइलें एक जैसी नहीं हो सकती हैं। इसमें थोड़ा समय लगता है क्योंकि इसमें फाइल को खोलना भी नहीं है।
  2. MD5 द्वारा : विभिन्न MD5 / Sha मूल्यों वाली फाइलें एक जैसी नहीं हो सकती हैं। इसमें थोड़ा अधिक समय लगता है क्योंकि इसे फ़ाइल में सभी बाइट्स को पढ़ना पड़ता है और उन पर गणित करना पड़ता है, लेकिन यह कई तुलनाओं को तेज बनाता है।
  3. उपरोक्त अंतरों को विफल करना : फाइलों की बाइट-बाइट तुलना करना। यह निष्पादित करने के लिए एक धीमी परीक्षा है, यही कारण है कि इसे तब तक छोड़ दिया जाता है जब तक कि अन्य सभी नष्ट करने वाले कारकों पर विचार नहीं किया जाता है।

Fdupes ऐसा करता है। और आपको सॉफ्टवेयर का उपयोग करना चाहिए जो समान मानदंडों का उपयोग करता है।


7
यह वास्तव में अधिक संभावना है कि आपकी हार्ड ड्राइव जादुई रूप से एक छवि को नष्ट कर देगी, इससे एमडी 5 टकरा जाएगा। "केवल 2 ^ 128 संयोजनों के साथ 2 ^ 100,000,000,000 संयोजन" - मैं यहां आपसे सहमत हूं। यदि उनके पास 2 ^ 100,000,000,000 चित्र हैं, तो MD5 (या लगभग कोई हैश एल्गोरिथम) खराब होगा।
ग्रेग डीन

4
इसकी कोई संभावना नहीं है , इसकी कोई संभावना नहीं है । यह असंभव नहीं है । इसकी काफी संभव 10 फाइलें हैं जो सभी एक-दूसरे से टकराती हैं, लेकिन सभी पूरी तरह से अलग हैं। यह संभावना नहीं है, लेकिन ऐसा हो सकता है, इसलिए आपको इसके लिए परीक्षण करना होगा।
केंट फ्रेड्रिक

2
फ़ाइल का आकार, फिर MD5, और तब बाइट चेक के लिए केवल बाइट।
ब्रैड गिल्बर्ट

3
@Kent - मैं आपके साथ 100% सहमत हूं। किसी चीज की अवहेलना करना आलस्य है क्योंकि यह बहुत ही संभावना नहीं है, यहां तक ​​कि संभावना नहीं है कि हम किस बारे में बात कर रहे हैं। अगर मेरा कुछ डेटा नष्ट हो गया तो मैं नाराज हो जाऊंगा क्योंकि उस व्यक्ति ने प्रोग्राम लिखने वाले को सोचा था कि कुछ भी कोडिंग के लिए परेशान करने की संभावना नहीं थी।
जो टेलर

10

यह यूनिक्स की तरह एक लाइनर है (लिनेक्स सहित) OSes या विंडोज के साथ Cygwin स्थापित:

find . -type f -print0 | xargs -0 shasum | sort |
  perl -ne '$sig=substr($_, 0, 40); $file=substr($_, 42); \
    unlink $file if $sig eq $prev; $prev = $sig'

md5sum (जो लगभग 50% तेज है) का उपयोग किया जा सकता है यदि आप जानते हैं कि कोई जानबूझकर बनाई गई टक्कर नहीं है (आपके पास स्वाभाविक रूप से होने वाली md5 टक्कर को खोजने के मौके की तुलना में 10 प्रमुख लॉटरी जीतने का बेहतर मौका होगा।)

यदि आप उन सभी दुपट्टों को देखना चाहते हैं जिन्हें हटाने के बजाय उन्हें केवल unlink $fileभाग को बदल दें print $file, "\n"


1
आप के रूप में अच्छी तरह से रिक्त स्थान को पकड़ने के लिए -00 और xargs-0 का उपयोग कर सकते हैं, लेकिन यह भी देखें कि यहां एक उपयोगी विकल्प है: खोज। -Type f -exec shasum {} \; | सॉर्ट ... इसके अलावा: आपको @F (-a) का उपयोग नहीं करना चाहिए क्योंकि यह रिक्त स्थान के साथ काम नहीं करेगा। इसके बजाय रूट की कोशिश करें।

अच्छी कॉल, जियोकार। अपने सुझावों के साथ उत्तर को अपडेट करें।

"md5sum (जो लगभग 50% तेज है) का उपयोग किया जा सकता है यदि आप जानते हैं कि कोई जानबूझकर बनाई गई टक्कर नहीं है" - ठीक
ग्रेग डीन

6

मैंने यूनिक्स सिस्टम पर fdupesसी freedups( और सी) (पर्ल) लिखा है , और वे विंडोज पर भी काम कर सकते हैं; वहाँ भी कर रहे हैं इसी तरह है कि विंडोज पर काम करने के लिए दावा कर रहे हैं: dupmerge, liten(पायथन में लिखा), आदि


पर्ल और पायथन सॉफ्टवेयर को विंडोज और * निक्स सिस्टम पर अनौपचारिक रूप से काम करना चाहिए, यह मानते हुए कि फाइलसिस्टम का विवरण मायने नहीं रखता है।
नोव

2

विंडोज पर डुप्लिकेट छवियों को हटाने के लिए DupliFinder पर एक नज़र डालें। यह नाम, आकार और वास्तविक छवि जानकारी जैसे कई मानदंडों द्वारा चित्रों की तुलना कर सकता है।

डुप्लिकेट फ़ाइलों को हटाने के लिए अन्य टूल के लिए इस Lifehacker लेख पर एक नज़र डालें


1

डुप्लींडर के बजाय, डेडरिंगर के बजाय कांटेक्ट प्रोजेक्ट का प्रयास करें । हमने मूल परियोजना में एक टन कीड़े तय किए हैं, नई सुविधाओं का एक गुच्छा जोड़ा है, और नाटकीय रूप से बेहतर प्रदर्शन किया है।


1

एक विकल्प Dupkiller हो सकता है ।

DupKiller आपके कंप्यूटर पर डुप्लिकेट या समान फ़ाइलों को खोजने और निकालने के लिए सबसे तेज़ और सबसे शक्तिशाली टूल में से एक है। जटिल एल्गोरिदम, इसकी खोज तंत्र में निर्मित, उच्च परिणाम - तेजी से फ़ाइल खोज करते हैं। बहुत सारे विकल्प लचीले ढंग से खोज को अनुकूलित करने की अनुमति देते हैं।

यहाँ छवि विवरण दर्ज करें

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