फ़ाइल और निर्देशिका तुलना उपकरण?


149

मैं कुछ ऐसी चीज़ों की तलाश कर रहा हूं जो निर्देशिकाओं और फ़ाइलों की तुलना करें, जैसे कि विंडोज़ से तुलना करें।

इसका मुख्य रूप से स्रोत नियंत्रण के उपयोग के लिए है, लेकिन मुझे इसे तैनाती के लिए भी उपयोग करने की आवश्यकता है।


क्या आप केवल फ़ाइल सूची या प्रत्येक फ़ाइल की वास्तविक सामग्री चाहते हैं?
मार्टिन यूडिंग

मैं फ़ाइल सूची चाहता हूँ और यदि संभव हो तो एक ही पथ के साथ फ़ाइलों के बीच भिन्न सामग्री।
इस्मानी

2
यह आसान होगा यदि GUI उपकरण फ़ोल्डर और फ़ाइलों को छिपाने की अनुमति देता है जो समान हैं । इससे विषम फ़ोल्डर और फ़ाइलों पर ध्यान केंद्रित करना बहुत आसान हो जाएगा। क्या कोई ऐसा उपकरण जानता है जो इस सुविधा का समर्थन करता है?
JJD

पर एक नज़र डालें सामंजस्य । तुलना के अलावा, "वन-स्टॉप शॉप यह सब करती है" दृष्टिकोण, जबकि यूनिसन ट्री ट्रैवर्सल को संभालने, राज्य को रखने और परिवर्तनों को प्रचारित करने से परे है , परे परे चीजों को अलग-अलग, 3-वे मर्ज, आदि जैसी चीजों को सौंपने से सुविधाओं की तुलना करें जो कुछ भी आपके लिए है। फ़ाइल स्तर पर काम करने वाला पसंदीदा कार्यक्रम। यूनिसन स्वतंत्र है, बहुत मजबूत और परिपक्व सॉफ्टवेयर है, जल्दी से विभिन्न पेड़ों के बीच नेटवर्क के माध्यम से, विशाल पेड़ों का पता लगा सकता है और उन्हें सिंक्रनाइज़ कर सकता है, आदि पहले डॉक्स पढ़ें, विशेष रूप से विंडोज पर।
स्टीफन गौरिचोन

emacs में डायरेक्टरी तुलना टूल है। सब कुछ emacs की तरह, आंख कैंडी है, ठीक है, "आंख कैंडी भी क्या मतलब है?", फिर भी यह कुंजी के साथ प्रासंगिक मदद दिखाता है, कुछ कीस्ट्रोक्स पुनरावर्ती विश्लेषण के साथ अनुमति देता है, समान फ़ाइलों या यहां तक ​​कि उप-विभाजनों को छिपाने के लिए, अंतःक्रियात्मक रूप से रंग दिखाने के लिए फ़ाइलें। विभिन्न विकल्पों के साथ कोडित अंतर, अंतःक्रियात्मक रूप से विलय, फ़ाइलों पर मनमाने ढंग से संपादन करना, प्रचार करना या प्रदर्शन करना, आसानी से अगली फ़ाइल या डीआईआर पर जाना, सभी सामान्य संपादन सुविधाओं के साथ, राज्य का ध्यान रखना।
स्टीफन गौरिचोन

जवाबों:


175

मिलकर एक हो जानामेल्ट स्थापित करें

मेल्ड एक ऐसा उपकरण है जो फाइलों और निर्देशिकाओं की तुलना और विलय कर सकता है। यह मानक diff डिफुटिल स्थापित करेंऔर patch पैच स्थापित करेंकमांड लाइन टूल के लिए GUI एनालॉग है । (देखें आदमी diff और आदमी पैच उन पर अधिक जानकारी के लिए)

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

इसके अलावा, बहुत सारे सोर्स कंट्रोल सिस्टम (जैसे कि bzr bzr-gtk स्थापित करेंया git गिट स्थापित करेंतो) संस्करणों के बीच अंतर पैदा करने की क्षमता रखते हैं।


2
मेल्ड अद्भुत है। मैं इसे अपने स्रोत नियंत्रण अंतर के रूप में उपयोग करता हूं।
मैट जॉइनर

12
बस एक बड़े फ़ोल्डर पर आज़माया गया - 4 जीबी, 2000 फाइलें। पिघल की कार्यक्षमता के रूप में वांछित है। लेकिन इस फ़ोल्डर के लिए मेल्ड बेहद धीमा है और यूआई अनुत्तरदायी (ब्लॉक) है। अब rsync का उपयोग करना।
geekQ

1
साथ ही, टेक्स्ट फाइल को साइड से तुलना करने पर, या पेस्ट सामान कॉपी करने में भी बहुत अच्छा काम करता है। सबसे अच्छा इंटरफ़ेस मैंने देखा है!
स्टीफन रोजिन

@geekQ एक तेज विकल्प के रूप में, एक फ़ोल्डर के बड़े हिस्से को संभालने में सक्षम है जैसा कि आप तुरंत चाहते हैं, beyond compareनीचे देखें। imho से बेहतर है
Blauhirn

मेलड हर बार एक फ़ोल्डर का चयन करना चाहता है: / मेरे पास मेरे वितरण भंडार (Ubuntu 14.04) पर सबसे नया संस्करण उपलब्ध है
Youda008

44

मुश्किल है आपका दोस्त

diff -ur path1 path2

यह पथ 1 और पथ 2 के बीच सामान्य सभी फ़ाइलों की तुलना करेगा।

यदि आप इसमें परिवर्तन -urकरते हैं, -urNतो यह उन फ़ाइलों की सामग्री को भी दिखाएगा जो केवल एक पथ में मौजूद हैं।


1
स्थापित colordiffऔर इस्तेमाल कियाcolordiff -ur path1 path2
warvariuc

साइबरविन में काम नहीं करता है।
टोमैटो ज़ेटो

22

'बियॉन्ड तुलना' लिनक्स के लिए भी उपलब्ध है।

उनके डाउनलोड url की जाँच करें: http://www.scootersoftware.com/download.php


बियॉन्ड कंपेयर खासतौर पर तब उपयोगी होता है जब एक ssh (की या पासवर्ड के साथ) किसी रिमोट होस्ट के लिए किया जाता है और उसकी तुलना एक स्थानीय कॉपी से की जाती है।
brianlmerritt

13

diffकमांड का उपयोग करें :

diff -u file1 file2

diff -uसंदर्भ की कुछ पंक्तियों के साथ एक प्रारूप का चयन करता है। एक सादा diff file1 file2ही अलग-अलग रेखाओं को सूचीबद्ध करता है। आउटपुट प्रारूप को नियंत्रित करने के लिए कई और विकल्प हैं, व्हॉट्सएप-केवल अंतरों को अनदेखा करें, आदि।

यदि आप किसी फ़ाइल में आउटपुट लिखना चाहते हैं, तो उसे रीडायरेक्ट करें:

diff -u file1 file2 >file1-file2.diff

12

सूक्ति कमांडरसूक्ति कमांडर स्थापित करें

इंटरफ़ेस वास्तविक सेक्सी नहीं हो सकता है, लेकिन यह बहुत शक्तिशाली है!

वैकल्पिक शब्द

और यदि आप अन्य * कमांडर (जैसे नॉर्टन, या पसंद) के लिए उपयोग किए गए थे, तो आप खो नहीं जाएंगे।


1
मैंने इसका उपयोग 2 फ़ाइलों की तुलना करने के लिए नहीं किया है, लेकिन मैंने इसका उपयोग यह बताने के लिए किया है कि कौन सी फाइलें निर्देशिकाओं की तुलना करते समय अलग थीं। तस्वीरों को छांटते समय यह विशेष रूप से उपयोगी है ;-)
Huygens

10

कमांड लाइन उपकरण

इस ब्लॉग प्रविष्टि से प्रेरित है ।

diff

विभिन्न फाइलों को सूचीबद्ध करना:

diff -qr folder1 folder2

लिस्टिंग सामग्री:

diff -Naur folder1 folder2

rsync

यदि दो निर्देशिका एक ही मशीन पर नहीं हैं, rsyncतो सबसे आसान समाधान हो सकता है। आमतौर पर rsyncइसका उपयोग निर्देशिकाओं को सिंक करने के लिए किया जाता है, लेकिन आप इसे वर्बोज़ और ड्राई मोड में चला सकते हैं, इसलिए यह केवल उन फाइलों को सूचीबद्ध करेगा जिन्हें इसे बदलना होगा।

rsync -rvnc --delete folder1 server:/path/to/folder2

cअगर आप टाइमस्टैम्प पर आधारित फाइलों की तुलना करना चाहते हैं और हर चीज में तेजी लाने के लिए फाइल के आकार की तुलना कर सकते हैं:

rsync -rvn --delete folder1 server:/path/to/folder2

9

KrusaderKrusader स्थापित करें

क्रूसेडर एक फ्री टूल (सॉफ्टवेयर सेंटर में उपलब्ध) है जो तुलना में फ़ोल्डर सामग्री को दिखाता है और आप बहुत सारे विभिन्न विकल्पों के साथ सिंक्रनाइज़ कर सकते हैं। आप सिंक्रनाइज़ और तुलना करते समय फ़िल्टर कर सकते हैं।

Krusader

फ़ाइल सामग्री की तुलना करने के लिए, आप बस दो फ़ाइलों को चिह्नित करते हैं "फ़ाइल"> "सामग्री की तुलना करें" और उनकी तुलना पत्र के आधार पर एक पत्र से की जाती है। डिफ़ॉल्ट तुलना उपकरण Krusader द्वारा उपयोग किया जाता है डिफ़ॉल्ट KDE उपकरण " कोम्पर " है। आप किसी अन्य तुलना उपकरण का उपयोग करने के लिए क्रूसरर सेट कर सकते हैं - जैसे ऊपर दिए गए उदाहरणों में से एक।

यह अब तक का सबसे पूर्ण समाधान है और यह बहुत सुविधाजनक है। और यह आधी रात के कमांडर (नॉर्टन कमांडर सिंटैक्स) द्वारा उपयोग किए जाने वाले सभी फ़ंक्शन कीबाइंडंग्स का समर्थन करता है।


आप दो निर्देशिका पैनल के पुनरावर्ती फ़ाइलों के परिवर्तन को प्राप्त करने के लिए "टूल्स -> सिंक्रोनाइज़्ड डाइरेक्टरीज़" का भी उपयोग कर सकते हैं।
एंजेलोस पिकौलस

दुर्भाग्य से क्रुसाडर में सिंक्रोनाइज़र को अस्वीकार कर दिया गया है: Bugs.kde.org/show_bug.cgi?id=270150#c7 । क्या कोई विकल्प है जो सक्रिय रूप से बनाए रखा गया है?
रूबो77

1
@ rubo77: इस बग को इस बीच तय किया गया है।
17



4

Unison एक फास्ट फाइल सिंक्रोनाइज़ेशन टूल है जो rsync एल्गोरिथम का उपयोग करता है और आपको 2 स्थानों के बीच अपडेट करने से पहले अंतर का पूर्वावलोकन करने देता है, चाहे वे रिमोट या लोकल हों।


4

मुझे दो सप्ताह पहले हैशदीप के बारे में पता चला । और इसके कुछ मजबूत फायदे हैं:

  • इसके विपरीत meld, यह बहुत बड़े फ़ोल्डरों के लिए अच्छा काम करता है। जहां meldबेहद धीमी गति से और UI अनुत्तरदायी (अवरुद्ध) हो जाता है, हैशदीप बस एक स्थिर गति से काम करता है
  • इसके विपरीत rsync, हैशदीप ने फ़ाइलों को ले जाया - एक ही सामग्री के साथ फ़ाइलें, बस एक अलग निर्देशिका में।

वर्बोज़ आउटपुट जैसा है:

...
foo/bar.txt: Known file not used
x/foo/M0824_2L.JPG: Moved from y/P1010998.JPG

hashdeep: Audit failed
   Input files examined: 0
  Known files expecting: 0
          Files matched: 6233
Files partially matched: 0
            Files moved: 3695
        New files found: 19257
  Known files not found: 4713

4

इस तुलना को करने का एक अच्छा तरीका " md5sum " के साथ " खोज " का उपयोग करना है , फिर एक " अंतर " है।

उदाहरण:

निर्देशिका में सभी फ़ाइलों को सूचीबद्ध करने के लिए खोज का उपयोग करें फिर प्रत्येक फ़ाइल के लिए md5 हैश की गणना करें और इसे एक फ़ाइल में पाइप करें:

$find /dir1/ -type f -exec md5sum {} \; > dir1.txt

दूसरी निर्देशिका के लिए भी यही प्रक्रिया करें:

$find /dir2/ -type f -exec md5sum {} \; > dir2.txt

फिर परिणाम की दो फाइलों की तुलना "भिन्न" से करें:

$diff dir1.txt dir2.txt

यह रणनीति बहुत उपयोगी है जब दो निर्देशिकाओं की तुलना एक ही मशीन में नहीं की जाती है और आपको यह सुनिश्चित करने की आवश्यकता है कि फाइलें दोनों निर्देशिकाओं में समान हैं।

नौकरी करने का एक और अच्छा तरीका गिट का उपयोग करना है

git diff --no-index dir1/ dir2/

सादर!


3

FreeFileSync भी आज़माएं । इसमें एक सभ्य इंटरफ़ेस है, स्वीकार्य तुलना गति, तुलनात्मक परिणाम की अच्छी फ़िल्टरिंग, सिंक्रनाइज़ेशन के तरीके अलग हैं। यह एक फ़ोल्डर मॉनीटरिंग टूल (RealTimeSync) के साथ आता है जो FreeFileSync (वास्तव में किसी भी कमांड या स्क्रिप्ट) को लॉन्च कर सकता है जब उस विशिष्ट फ़ोल्डर (या फ़ोल्डर्स) या फ़ाइलों को बदल दिया जाता है। वास्तव में एक कोशिश के काबिल।

इसके बारे में अधिक जानकारी यहाँ या यहाँ , जहाँ आपके पास PPA है , भी

उनके पेज से, प्रमुख विशेषताएं:

फ़ाइलों की तुलना करें (तिथि या तारीख से) और उन्हें सिंक्रनाइज़ करें।

कोई सीमाएँ नहीं: फ़ाइलों की एक मनमानी संख्या को सिंक्रनाइज़ किया जा सकता है।

यूनिकोड समर्थन।

नेटवर्क का समर्थन।

बहुत लंबे फ़ाइल नाम के लिए अंतर्निहित समर्थन (MAX_PATH = 260 वर्णों से अधिक)।

हटाए गए फ़ाइलों और संघर्ष का पता लगाने के प्रसार के लिए सिंक्रनाइज़ेशन डेटाबेस

अलग विन्यास के साथ कई फ़ोल्डर जोड़े के लिए समर्थन

विंडोज / लिनक्स प्रतीकात्मक लिंक और विंडोज जंक्शन पॉइंट्स के लिए पूर्ण समर्थन।

झुक और आसानी से सुलभ यूआई: गति और डेटा के विशाल सेट के लिए अत्यधिक अनुकूलित।

एल्गोरिथ्म पूरी तरह से सी ++ में कोडित हैं।

अधिकतम प्रदर्शन के लिए अनुकूलित सभी प्रगति संकेतक!

GUI के साथ या उसके बिना स्वचालित सिंक्रनाइज़ेशन के लिए बैच नौकरियां बनाएं।

प्रयोज्य पर ध्यान दें:

यूआई पर केवल आवश्यक कार्यक्षमता: कोई अतिभारित मेनू या आइकन जंगल नहीं।

ड्रैग एंड ड्रॉप के माध्यम से सभी फ़ोल्डरों का चयन करें।

अंतिम उपयोग किए गए कॉन्फ़िगरेशन और स्क्रीन सेटिंग्स स्वचालित रूप से सहेजे जाते हैं।

ड्रैग एंड ड्रॉप, लोड-बटन या कमांडलाइन द्वारा विभिन्न विन्यासों को बनाए रखना और लोड करना।

बाहरी अनुप्रयोग शुरू करने के लिए डबल-क्लिक करें (जैसे विंडोज एक्सप्लोरर में फ़ाइल दिखाएं)

सभी ग्रिड डेटा को टेक्स्ट के रूप में कॉपी और पेस्ट करें

सीधे सुपर ग्रिड / अस्थायी फ़ाइलों को मुख्य ग्रिड पर हटा दें।

संदर्भ मेनू पर राइट-क्लिक करें।

व्यापक स्थिति की जानकारी और त्रुटि रिपोर्टिंग

नाम, आकार या तिथि के अनुसार फाइल-सूचियों को क्रमबद्ध करें।

फ़ाइलों के लिए समर्थन 4 GB से बड़ा है।

फ़ाइलों को हटाने या उन्हें अधिलेखित करने के बजाय रीसायकल बिन में स्थानांतरित करने का विकल्प।

डिफ़ॉल्ट फ़िल्टर के साथ निर्देशिका "\ RECYCLER" और "\" सिस्टम वॉल्यूम जानकारी को अनदेखा करें। (केवल विंडोज)

स्थानीयकृत संस्करण कई भाषाओं के लिए उपलब्ध हैं।

कॉपी से पहले हटाएं: बड़ी सिंक-नौकरियों के लिए डिस्क स्थान की कमी से बचें।

समन्‍वयन से फ़ाइलों को सम्‍मिलित / बहिष्कृत करने के लिए फ़िल्टर कार्यक्षमता (पुन: तुलना की आवश्यकता के बिना!)।

अस्थायी रूप से सिंक्रनाइज़ेशन से विशिष्ट फ़ाइलों को शामिल / शामिल करें।

FAT / FAT32 वॉल्यूम पर स्वचालित रूप से डेलाइट सेविंग टाइम परिवर्तन को हैंडल करें।

पोर्टेबल संस्करण उपलब्ध (इंस्टॉलर के माध्यम से चयन करने योग्य)।

देशी 64-बिट संस्करण।

FreeFileSync के भीतर से अपडेट के लिए स्वचालित रूप से जांचें।

Windows वॉल्यूम छाया प्रतिलिपि सेवा का उपयोग करके लॉक की गई फ़ाइलों की प्रतिलिपि बनाएँ। (केवल विंडोज)

मैक्रोज़% समय%, निर्देशिका नामों के भीतर% दिनांक% के साथ नियमित बैकअप बनाएं

फाइल और फोल्डर को सिंक्रोनाइज़ करते समय / एक्सेस / संशोधन समय बनाएँ

उन्नत लॉकिंग रणनीति कई सिंक्रनाइज़ेशन प्रक्रियाओं (जैसे कई लेखकों, एक ही नेटवर्क साझा) की अनुमति देने के लिए

मैं इसे हटाए गए फ़ाइलों को प्रबंधित कर सकता हूं, उन्हें ट्रैश या उपयोगकर्ता द्वारा निर्दिष्ट फ़ोल्डर में स्थानांतरित कर सकता हूं। नुकसान को इंगित करने के लिए: प्रोग्राम प्रलेखन विंडोज पर बहुत कम केंद्रित है, लिनक्स पर कम। लेकिन यह अपना काम अच्छी तरह से करता है।


3

आप विसरित का उपयोग कर सकते हैं:

sudo apt-get install diffuse
diffuse file1 file2

2
मैं अक्सर एक हत्यारे की सुविधा के लिए डिफ्यूज़ का उपयोग करता हूं - मैन्युअल रूप से मर्ज एंकर सेट करने की क्षमता। यह निर्देशिका (अभी तक) नहीं करता है, लेकिन अलग-अलग और गन्दा अंतर के लिए, एंकर की सुविधा भयानक है।
Sk606


1

यदि आप सिर्फ तुलना कर रहे हैं, तो ग्रहण आईडीई थोड़ा भारी है, लेकिन यह अन्य चीजों के साथ भी अच्छा काम करता है। आप 2 प्रोजेक्ट, पथ या फ़ाइलों का चयन कर सकते हैं और उनकी एक-दूसरे से तुलना कर सकते हैं, और स्रोत नियंत्रण सर्वर के साथ सिंक्रनाइज़ भी कर सकते हैं।


1

IMHO FreeFileSync मेल्ड की तुलना में बहुत अच्छा और अधिक उपयोगी है। यह तेज़ और स्थिर है, कॉस्टयूमेबल सिंक्रोनाइज़ेशन कर सकता है और सीएसवी फ़ाइल में तुलना के परिणाम को निर्यात भी कर सकता है।

लिंचपैड लिंक



0

फ़ाइलों की तुलना करने के लिए

File_1.txt
Line1
Line2

File_2.txt
Line1
Line 2

आप कमांड का उपयोग कर सकते हैं cmp:

cmp -b "File_1.txt" "File_2.txt"

आउटपुट होगा

a b differ: byte 11, line 2 is  62 2  40  

Dirs (आपकी ज़रूरत) की तुलना करने के लिए:

आप उपयोग कर सकते diff आदेश:

diff -r --brief dir1 dir2

man diff

  -r, --recursive
              recursively compare any subdirectories found

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