फोल्डर की सभी सामग्रियों के लिए dos2unix रिकर्सिवली कैसे अप्लाई करें?


11

क्या dos2unixकमांड को लागू करने का कोई तरीका है ताकि यह एक फ़ोल्डर में सभी फ़ाइलों के खिलाफ चलता है और यह सबफ़ोल्डर है? man dos2unixकोई भी -rया समान विकल्प नहीं दिखाता है जो इसे सीधे आगे बढ़ाएगा?

जवाबों:



3

मेरे लिए बायनेरी और छिपी हुई फाइलें छोड़ना महत्वपूर्ण था:

इसने मेरे लिए अच्छा काम किया:

find . -type f -not -path '*/\.*' -exec grep -Il '.' {} \; | xargs -d '\n' -L 1 dos2unix -k

जो इसका अनुवाद करता है: वर्तमान निर्देशिका में सभी गैर-छिपी हुई फ़ाइलों को पुन: खोजता है, फिर grep का उपयोग करते हुए, सभी गैर-बाइनरी (-I) गैर-रिक्त फ़ाइलों को सूचीबद्ध करता है, फिर इसे xargs (newlines द्वारा सीमांकित) में एक समय में एक फ़ाइल में पाइप करता है dos2unix और मूल टाइमस्टैम्प रखें।

यह सभी देखें:

https://github.com/mdolidon/endlines


2

आप निर्देशिका संरचना में उन सभी फ़ाइलों को खोजने के लिए उपयोग कर सकते हैं जिन्हें आप अपने dos2unix कमांड के माध्यम से चलाना चाहते हैं

find /path/to/the/files -type f -exec dos2unix {} \;

खोजने के लिए मैन पेजों पर एक नज़र डालें, बहुत सारे विकल्प हैं जो आप यह निर्दिष्ट करने के लिए उपयोग कर सकते हैं कि क्या मूल्यांकन किया जाता है


यह काम नहीं किया।
एलेक्स किमैन

2
बहुत चल रहा है अगर यह एक है। फ़ाइल निर्देशिका में कहीं भी .git निर्देशिका है ... यह मेरे स्थानीय गिट भंडार को दूषित कर दिया।
आरोन_एच


1

का उपयोग कर bash:

shopt -s globstar
dos2unix **

globstarमें खोल विकल्प bashके उपयोग के लिए सक्षम बनाता है **ग्लोब। यह ठीक वैसे ही काम करता है, *लेकिन /विकर्णों में मेल खाता है (इसलिए उपनिर्देशिकाओं में नाम मिलान)। यह एक निर्देशिका में काम करेगा जिसमें इसकी उपनिर्देशिका में फ़ाइलों की एक मध्यम संख्या होती है (कई हजारों नहीं)।

में zshऔर yashगोले (साथ set -o extended-globमें yash), तो आपको क्या करना होगा

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