फ़ाइलों को एक निर्देशिका में खोजें दूसरी में नहीं


12

क्या कोई लिनक्स / यूनिक्स उपकरण हैं जो एक निर्देशिका में सभी फाइलों को दूसरे में मौजूद नहीं पाते हैं? मूल रूप से मैं ls के आउटपुट पर काम करने वाले अंतर की तलाश कर रहा हूं।

लघु और मधुर लिपियों की भी सराहना की जाती है।

जवाबों:


20

diff यह पहले से ही करता है:

diff dir1 dir2

उदाहरण आउटपुट:

Only in dir1: some_file.txt
Only in dir1: some_other_file.txt
Only in dir2: third_file.txt

5
यह अच्छा है। एक ग्रिप: अंतर वास्तव में उन दोनों फाइलों में से प्रत्येक पर चल रहा है। वहाँ सिर्फ फ़ाइल नाम (मैं इसे खो चुके होंगे) के खिलाफ चलाने के लिए एक अस्पष्ट विकल्प है? अन्यथा, मैं सुझाव देता हूंdiff dir1 dir2 | grep "Only"
विली बालेंटिन

इस वाह बस को बचाने के लिए मुझे बैश पटकथा धन्यवाद के कई मिनट
user5359531

10

दे घुमा के:

diff <(cd dir1; ls) <(cd dir2; ls)

नहीं फ़ाइलों की सामग्री - केवल फ़ाइल नाम की तुलना करें।



सिंक के लिए rsync का उपयोग करें dirs
c4f4t0r

पार्स न करें ls, findइसके बजाय उपयोग करें !
वैल का कहना है कि मोनिका

4

जैसे लोगों ने आपको यहां बताया है, आप विभिन्न उपयोग विविधताओं में डीआईएफएफ का उपयोग कर सकते हैं। या आप dirdiffइसके बजाय बस का उपयोग करते हैं, जो आप कोशिश कर रहे हैं के लिए है! :-)

लेकिन अगर आप कुछ निर्देशिकाओं को सिंक में रखना चाहते हैं तो आपको वास्तव में इस पर ध्यान देना चाहिए rsync

सादर


3

यदि आप सभी उप निर्देशिकाओं के माध्यम से भी ऐसा करना चाहते हैं, तो एक अच्छा तरीका यह है:

diff --brief -r dir1/ dir2/

मैं संक्षिप्त का उपयोग करना पसंद करता हूं, लेकिन आप चाहें तो इसे छोड़ सकते हैं।





0

डेनिस विलियमसन एक था अच्छा जवाब है, लेकिन मैं इस रिकर्सिवली करने के लिए की जरूरत है। GNU फाइंडट्यूल्स 4.7.0 अपने आउटपुट को सॉर्ट नहीं करता है, इसलिए यहां मैंने जो प्रयोग किया है

diff <(cd $dir1; find | sort) <(cd $dir2; find | sort)

इसे केवल एक ही तरीके से करने के लिए, और फ़ाइलों की सूची तैयार करने के लिए, मैंने इसका उपयोग किया:

diff <(cd $dir1; find | sort) <(cd $dir2; find | sort) \
| grep '< ./' | sed "s,< ./,$dir1/,"

इसके लिए ठीक से काम करने के लिए, न तो $ dir1 और न ही $ dir2 को अनुगामी स्लैश शामिल करना चाहिए।

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