मैं उन फ़ाइलों को खोजना चाहता हूं जो किसी अन्य फ़ाइल विस्तार के साथ सह-अस्तित्व में नहीं हैं” यानी सभी .c फ़ाइलें जिनमें संबंधित .o फ़ाइल नहीं है। मैंने find $HOME \( -name '*.c' ! -a -name '*.o' \)
की कोशिश की लेकिन यह काम करता है।
1 उत्तर
आप निम्न कार्य कर सकते हैं:
- सभी फाइलों के नाम खोजें
- स्ट्रिप ट्रेलिंग एक्सटेंशन, यदि कोई हो (मान लें कि डॉट का उपयोग केवल एक्सटेंशन से पहले किया जाता है)
- समूह डुप्लीकेट के लिए क्रमबद्ध करें
- केवल डुप्लिकेट की सूची बनाएं
शेष पंक्तियाँ उन फ़ाइलों को सूचीबद्ध करती हैं जो विभिन्न एक्सटेंशन के साथ होती हैं
find yourdirectory -type f | sed 's#\..*##' | sort | uniq -d
यदि आप केवल एक्सटेंशन .c
और .o
में रुचि रखते हैं, तो उसी के अनुसार find
को सीमित करें।
find yourdirectory -type f -name '*.c' -or -name '*.o' | sed 's#\..*##' | sort | uniq -d
जैसा कि यह पता चला है, आप वास्तव में जानना चाहते थे (और यह बहुत शुरुआत में आपका प्रश्न होना चाहिए था): ".c फ़ाइलों को कैसे खोजें, जिनमें कोई .o फ़ाइल नहीं है"
find yourdir -name '*.c' | sed 's#..$##' | sort > c-files
find yourdir -name '*.o' | sed 's#..$##' | sort > o-files
diff c-files o-files | grep '^<'
अंतिम grep उन पंक्तियों को फ़िल्टर करेगा जो केवल बाएं फ़ाइलों (c-files) में हैं
संबंधित सवाल
नए सवाल
linux
LINUX QUESTIONS को संबंधित होना चाहिए। इस टैग का उपयोग केवल तभी करें जब आपका प्रश्न लिनक्स एपीआई या लिनक्स-विशिष्ट व्यवहार का उपयोग करके प्रोग्रामिंग से संबंधित हो, न कि केवल इसलिए कि आप लिनक्स पर अपने कोड को चलाने के लिए होते हैं। यदि आपको लिनक्स समर्थन की आवश्यकता है तो आप https://unix.stackexchange.com या विशिष्ट लिनक्स वितरण की स्टैक एक्सचेंज साइट जैसे https://askubuntu.com या https://elementaryos.stackexchange.com/ की कोशिश कर सकते हैं