ফাইল সিস্টেমের শাখায় প্রতিটি ফাইলের সমস্ত ট্যাবগুলিকে 2 টি স্পেস দিয়ে কীভাবে প্রতিস্থাপন করবেন?


10

আমি স্কালাকে কোড করি এবং এটির কনভেনশনটি সনাক্তকরণের জন্য প্রতি স্তরের দ্বিগুণ স্থান ব্যবহার করা। তবে বিভিন্ন সম্পাদক ব্যবহার করে আমার উত্সগুলি শূন্যস্থান এবং ট্যাবগুলির মিশ্রণে পূর্ণ করে তোলে।

আমি সমস্ত ফাইল (* .scala ফাইলগুলি, তবে প্রকৃতপক্ষে এটি নির্দিষ্ট করার প্রয়োজন নেই) (একটি প্রদত্ত ডিরেক্টরিতে এবং সমস্ত অন্তর্নিহিত এফএস শাখায় (পুনরাবৃত্ত)) স্বয়ংক্রিয়ভাবে সমস্ত ট্যাবগুলিকে ডাবল স্পেস দিয়ে প্রতিস্থাপন করতে চাই with আমি বিশ্বাস করি ক্লাসিক ইউনিক্স / জিএনইউ সরঞ্জামগুলির সাথে এটি করার একটি সহজ এবং সুন্দর উপায় আছে তবে আমার এই অঞ্চলে কোনও অভিজ্ঞতা নেই। আপনি কি আমাকে সাহায্য করার জন্য এত দয়াবান হবেন?

উত্তর:


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 কেবল একটি দেখায়।
janmoesen

10

এটি করা উচিত:

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

দ্রষ্টব্য: এটি পরীক্ষা করা হয় না।


1
এটি এখনও পুনরুক্তিযোগ্য নয়। আপনি পুনরাবৃত্তির জন্য findসমর্থন করে এমন একটি শেল ব্যবহার করতে পারেন **/*.scala
janmoesen

পুনরাবৃত্তিমূলক আচরণ যুক্ত করার জন্য সম্পাদিত ...
সারদাথ্রিয়ন - এসই অপব্যবহারের বিরুদ্ধে

দয়া করে প্রচার করবেন না find | xargsfind -execপরিবর্তে ব্যবহার করুন, যেমন আমি আমার উত্তরে উল্লেখ করেছি। আরও সহজ এবং নিরাপদ।
janmoesen

এটি চেষ্টা করেও কোনও ফল হয় নি। কমান্ড তত্ক্ষণাত্ ফিরে আসে এবং ফাইলগুলির মধ্যে কোনও পরিবর্তন হয় না।
ইভান

এটি পরীক্ষিত নয় তবে এর সূত্রটি কাজ করবে work
সারদাথ্রিয়ন - এসই অপব্যবহারের বিরুদ্ধে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.