मैं डुप्लिकेट फ़ाइलों (यहां तक कि अलग-अलग नामों के साथ) के लिए दिए गए निर्देशिका के अंदर की जांच करने का एक तरीका खोजने की कोशिश कर रहा हूं और उन्हें पहली घटना की ओर इशारा करते हुए सहानुभूति के साथ बदल रहा हूं। मैंने कोशिश की है, fdupes
लेकिन यह सिर्फ उन डुप्लिकेट को सूचीबद्ध करता है।
यह संदर्भ है: मैं अपनी पसंद के अनुसार एक आइकन विषय को अनुकूलित कर रहा हूं, और मैंने पाया है कि कई आइकन, भले ही उनके अलग-अलग नाम और उनके मूल फ़ोल्डर के अंदर अलग-अलग स्थान हों, और विभिन्न प्रयोजनों के लिए उपयोग किए जाते हैं, मूल रूप से सिर्फ एक ही हैं चित्र। चूँकि एक ही संशोधन को बीस या तीस बार लागू करना निरर्थक है जब सिर्फ एक वास्तव में आवश्यक है, मैं केवल एक छवि रखना चाहता हूं और अन्य सभी को सहानुभूति देना चाहता हूं।
एक उदाहरण के रूप में, यदि मैं fdupes -r ./
निर्देशिका के अंदर भागता हूं, तो testdir
यह मेरे लिए निम्न परिणाम दे सकता है:
./file1.png
./file2.png
./subdir1/anotherfile.png
./subdir1/subdir2/yetanotherfile.png
इस आउटपुट को देखते हुए, मैं केवल फ़ाइल रखना चाहूँगा file1.png
, सभी अन्य को हटा दूंगा और सभी मूल फ़ाइल नामों को बनाए रखते हुए सिम्लिंक्स के साथ उनकी जगह ले लूंगा। इसलिए file2.png
अपना नाम बरकरार रखेगा, लेकिन file1.png
डुप्लिकेट होने के बजाय एक लिंक बन जाएगा ।
उन लिंक को एक निरपेक्ष पथ की ओर इशारा नहीं करना चाहिए, लेकिन मूल testdir
निर्देशिका के सापेक्ष होना चाहिए ; यानी yetanotherfile.png
की ओर इशारा किया जाएगा ../../file1.png
, को नहीं/home/testuser/.icons/testdir/file1.png
मुझे उन दोनों समाधानों में दिलचस्पी है, जिनमें GUI और CLI शामिल हैं। यह उपयोग करने के लिए अनिवार्य नहीं है fdupes
मैंने इसे उद्धृत किया है क्योंकि यह एक ऐसा उपकरण है जिसे मैं जानता हूं, लेकिन मैं उन समाधानों के लिए खुला हूं जो अन्य उपकरणों का भी उपयोग करते हैं।
मुझे पूरा यकीन है कि इस सब को संभालने के लिए एक बैश स्क्रिप्ट को बनाने में इतनी मुश्किल नहीं होनी चाहिए, लेकिन मैं यह जानने के लिए पर्याप्त नहीं हूं कि इसे खुद कैसे लिखा जाए।
v1.51
(Ubuntu 14.04.2 LTS)।