फ़ाइल सिस्टम शाखा में प्रत्येक फ़ाइल के सभी टैब को 2 स्थानों के साथ कैसे बदलें?


10

मैं Scala कोड करता हूं और यह पहचान के लिए प्रति स्तर डबल स्पेस का उपयोग करने के लिए कन्वेंशन है। लेकिन विभिन्न संपादकों का उपयोग करने से मेरे स्रोत रिक्त स्थान और टैब के मिश्रण से भर जाते हैं।

मैं सभी फाइलों को रिफ्लेक्टर करना चाहता हूं (* .scala फाइलें, वास्तव में, लेकिन यह निर्दिष्ट करना आवश्यक नहीं है) (किसी दिए गए निर्देशिका में और सभी अंतर्निहित FS शाखा (पुनरावर्ती)) स्वचालित रूप से, सभी टैब को दोहरे स्थान के साथ बदल रहा है। मेरा मानना ​​है कि क्लासिक यूनिक्स / जीएनयू उपकरणों के साथ ऐसा करने का एक आसान और सुंदर तरीका है, लेकिन मुझे इस क्षेत्र में कोई अनुभव नहीं है। क्या आप मेरी मदद करने के लिए इतने दयालु होंगे?

जवाबों:


9

पुनरावर्ती, उपयोग expand(जो इस उद्देश्य के लिए बनाया गया था):find . -type f -name '*.scala' -exec bash -c 'for x in "$@"; do mv "$x"{,.bak} && expand -t 2 "$x.bak" > "$x" && rm "$x.bak"; done' {} +

मैं इसके साथ ( sedया perlसरदारथियन का जवाब देखूंगा) क्योंकि वे इनलाइन संपादन का समर्थन करते हैं, लेकिन मैं expandवैसे भी अच्छे ओल का उल्लेख करना चाहता था ।

संपादित करें: यह होगा find . -type f -name '*.scala' -exec perl -p -i -e $'s/\t/ /g' {} +


पहला वेरिएंट उम्मीद के मुताबिक काम करता है। दूसरा (पर्ल) संस्करण दो के बजाय केवल एक स्थान के साथ एक टैब को बदलता है।
इवान

हाँ, क्षमा करें: यह एक स्वरूपण गलती थी। स्रोत कोड दो स्थान कहता है, लेकिन प्रदान किया गया HTML केवल एक दिखाता है।
जनमोसन

10

यह करना चाहिए:

find . -type f -name '*.scala$' -exec sed -i 's/\t/  /g' {} +

नोट: यह परीक्षण नहीं किया गया है।


1
यह अभी तक पुनरावर्ती नहीं है। आप उपयोग कर सकते हैं findया एक शेल जो **/*.scalaपुनरावृत्ति के लिए समर्थन करता है।
janmoesen

पुनरावर्ती व्यवहार को जोड़ने के लिए संपादित ...
सरथ्रियन - एसई दुरुपयोग के खिलाफ

कृपया प्रचार न करें find | xargsfind -execइसके बजाय उपयोग करें , जैसे मैंने अपने उत्तर में उल्लेख किया है। आसान और सुरक्षित।
जन्मोसेन

इसकी कोशिश की, कोई नतीजा नहीं निकला। कमांड तुरंत लौटता है और फाइलों के अंदर कुछ भी नहीं बदलता है।
इवान

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