2 अलग-अलग एक्सटेंशन के साथ डायरेक्टरी / डब्ल्यू फाइल्स ढूंढें


0

इसलिए मैं यह सोचने की कोशिश कर रहा हूं कि मैं यह कैसे कर सकता हूं। मैं उदाहरण के लिए इसके साथ फाइलें पा सकता हूं, लेकिन वास्तव में मैं चाहता हूं कि निर्देशिकाएं विशेष रूप से हैं जिसमें दोनों प्रकार के फ़ाइल हैं। कोई विचार?

इसके अलावा, मुझे परवाह नहीं है कि फ़ाइल नाम क्या है, बस निर्देशिका में फ़ाइल / w दोनों एक्सटेंशन शामिल हैं।

find . -type f \( -name "*.ext1" -or -name "*.ext2" \)

जवाबों:


0
{ find . -type f -name "*.ext1" -printf "%h\n" | sort -u; find . -type f -name "*.ext2" -printf "%h\n" | sort -u; } | sort | uniq -d

स्पष्टीकरण:

  • find ... -printf "%h\n" प्रिंट युक्त निर्देशिकाओं से मेल खाता है;
  • sort -u डुप्लिकेट हटाता है;
  • वहाँ है find ... | sort -u दो एक्सटेंशन में से प्रत्येक के लिए पाइप;
  • अंतिम sort | uniq -d प्रिंट लाइनें जो एक से अधिक बार दिखाई देती हैं; एक निर्देशिका पथ एक से अधिक बार दिखाई देगा यदि इसे प्रत्येक द्वारा वापस किया जाता है find ... | sort -u

कम से कम दो मुद्दे हैं:

  1. -printf POSIX नहीं है आदेश का एक पोर्टेबल संस्करण हो सकता है:

    { find . -type f -name "*.ext1" | xargs -L 1 dirname | sort -u; find . -type f -name "*.ext2" | xargs -L 1 dirname | sort -u; } | sort | uniq -d
    

    xargs शिकायत करेंगे अगर find कुछ नहीं पाता; हालांकि यह तर्क को तोड़ना नहीं चाहिए।

  2. निर्देशिका नामों में न्यूलाइंस तर्क को तोड़ देगा। वे झूठी सकारात्मकता उत्पन्न कर सकते हैं, आउटपुट को अस्पष्ट बना सकते हैं। अपने POSIX न्यूनतम से परे विस्तारित उपकरण उन विकल्पों का समर्थन कर सकते हैं जो आपको अशक्त-समाप्त तार को पार्स करने की अनुमति देते हैं। यह मेरे डेबियन में काम करता है:

    { find . -type f -name "*.ext1" -printf "%h\0" | sort -u; find . -type f -name "*.ext2" -printf "%h\0" | sort -z -u; } | sort -z | uniq -z -d
    

    ऐसा प्रारूप प्राप्त करने के लिए जो अधिक मानव-पठनीय है, उसे पाइप करें tr '\0' '\n'। निर्देशिका नामों से नई सूचियाँ अभी भी अस्पष्टता का कारण बनेंगी, लेकिन एक निर्देशिका नाम से कम से कम कई लाइनें लगातार दिखाई देंगी, जैसा कि आप निश्चित रूप से करना चाहते हैं।


बहुत बढ़िया प्रतिक्रिया! यह एक ऐसी चीज है जो मैं उम्मीद कर रहा था। बहुत बहुत धन्यवाद।
Dulanic
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.