क्या dos2unixकमांड को लागू करने का कोई तरीका है ताकि यह एक फ़ोल्डर में सभी फ़ाइलों के खिलाफ चलता है और यह सबफ़ोल्डर है?
man dos2unixकोई भी -rया समान विकल्प नहीं दिखाता है जो इसे सीधे आगे बढ़ाएगा?
क्या dos2unixकमांड को लागू करने का कोई तरीका है ताकि यह एक फ़ोल्डर में सभी फ़ाइलों के खिलाफ चलता है और यह सबफ़ोल्डर है?
man dos2unixकोई भी -rया समान विकल्प नहीं दिखाता है जो इसे सीधे आगे बढ़ाएगा?
जवाबों:
मेरे लिए बायनेरी और छिपी हुई फाइलें छोड़ना महत्वपूर्ण था:
इसने मेरे लिए अच्छा काम किया:
find . -type f -not -path '*/\.*' -exec grep -Il '.' {} \; | xargs -d '\n' -L 1 dos2unix -k
जो इसका अनुवाद करता है: वर्तमान निर्देशिका में सभी गैर-छिपी हुई फ़ाइलों को पुन: खोजता है, फिर grep का उपयोग करते हुए, सभी गैर-बाइनरी (-I) गैर-रिक्त फ़ाइलों को सूचीबद्ध करता है, फिर इसे xargs (newlines द्वारा सीमांकित) में एक समय में एक फ़ाइल में पाइप करता है dos2unix और मूल टाइमस्टैम्प रखें।
यह सभी देखें:
आप निर्देशिका संरचना में उन सभी फ़ाइलों को खोजने के लिए उपयोग कर सकते हैं जिन्हें आप अपने dos2unix कमांड के माध्यम से चलाना चाहते हैं
find /path/to/the/files -type f -exec dos2unix {} \;
खोजने के लिए मैन पेजों पर एक नज़र डालें, बहुत सारे विकल्प हैं जो आप यह निर्दिष्ट करने के लिए उपयोग कर सकते हैं कि क्या मूल्यांकन किया जाता है
वाइल्डकार्ड का उपयोग करें। इस तरह: (यदि आप फ़ोल्डर में हैं)
dos2unix *
या यदि आप फ़ोल्डर के बाहर हैं, तो:
dos2unix /path/to/folder/*
का उपयोग कर bash:
shopt -s globstar
dos2unix **
globstarमें खोल विकल्प bashके उपयोग के लिए सक्षम बनाता है **ग्लोब। यह ठीक वैसे ही काम करता है, *लेकिन /विकर्णों में मेल खाता है (इसलिए उपनिर्देशिकाओं में नाम मिलान)। यह एक निर्देशिका में काम करेगा जिसमें इसकी उपनिर्देशिका में फ़ाइलों की एक मध्यम संख्या होती है (कई हजारों नहीं)।
में zshऔर yashगोले (साथ set -o extended-globमें yash), तो आपको क्या करना होगा
dos2unix **/*
dos2unixबायनेरिज़ को डिफ़ॉल्ट रूप से छोड़ देता है।