2012-04-12 16 views
18

आप दो निर्देशिकाओं की फ़ाइलें की एक पुनरावर्ती diff कैसे प्रदर्शन कर सकते हैं में किसी दिए गए पैटर्न से मेल खाते हैं (ए और बी) में शामिल हैं:केवल फ़ाइलें हैं जो एक पुनरावर्ती diff

$ diff -r a b 

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

$ diff -r a b -name "*crazy*" 

जो एक ही नाम और पथ एक में और ख, जो उनके नाम में "पागल" के साथ फ़ाइलों के बीच डिफ दिखाई देंगे ।

प्रभावी रूप से, मैं अलग-अलग विकल्प के विपरीत की तलाश में हूं जो diff में उपलब्ध है।

+0

मैं मानता हूं कि यह उपयोगी होगा। 'grep' में' - शामिल 'ध्वज – xdhmoore

उत्तर

11

शायद यह थोड़ा अप्रत्यक्ष है, लेकिन इसे काम करना चाहिए। आप find का उपयोग करने वाले नहीं मेल खाने वाला पैटर्न कर फ़ाइलों की एक सूची प्राप्त करने के लिए कर सकते हैं, और उसके बाद "बहिष्कृत" उन सभी फाइलों:

find a b -type f ! -name 'crazy' -printf '%f\n' | diff -r a b -X - 

-X -diff stdin से पैटर्न पढ़ सकते हैं और कुछ भी बाहर निकालने के कर देगा कि मैचों। यह काम करना चाहिए बशर्ते आपकी फाइलों में उनके नामों में * या ? जैसे मज़ेदार वर्ण न हों। केवल नकारात्मकता यह है कि आपके diff में find कमांड शामिल नहीं होगा, इसलिए सूचीबद्ध diff कमांड उपयोगी नहीं है।

(मैंने केवल जीएनयू find और diff के साथ इसका परीक्षण किया है)।

संपादित:

के बाद से केवल गैर जीएनयू find-printf, sed एक विकल्प के रूप में इस्तेमाल किया जा सकता है नहीं है:

find a b -type f ! -name '*crazy*' -print | sed -e 's|.*/||' | diff -X - -r a b 

कि भी यह सोचते हैं कि गैर जीएनयू diff-X है जो मुझे नहीं पता।

+0

दुर्भाग्य से, इसे मैक ओएस एक्स पर काम करना है, और मैं http://stackoverflow.com/questions/752818/why-does-macs-find-not-have से देखता हूं -the-option-printf कि बीएसडी के खोज में एक -प्रिंट विकल्प नहीं है। इसलिए बीएसडी और जीएनयू संगत कमांड बनाने के लिए स्पष्ट रूप से कोई अच्छा तरीका नहीं है। –

+1

@ एडवर्ड डी'सुजा ने '-printf' – FatalError

+0

@ एडवर्ड डी'सुजा पर विचार करें [मैकपोर्ट्स] (http://www.macports.org/) का उपयोग न करने के लिए अपडेट किया है यदि आप ओएसएक्स पर जीएनयू टूल्स प्राप्त करना चाहते हैं। –

संबंधित मुद्दे