উত্তর:
find . -type f -print0 | xargs -0 dos2unix
বর্তমান ডিরেক্টরি ডিরেক্টরিতে পুনরাবৃত্তভাবে সমস্ত ফাইল সন্ধান করবে এবং ডস 2 ইউনিক্স কমান্ড এই ফাইলগুলির জন্য কল করবে
\;; echo Hello
findএই চেকটি করে না (যদিও এটি যোগ করার পক্ষে যথেষ্ট সহজ হবে), তবে আধুনিকভাবে dos2unixসঠিকভাবে বাইনারি ফাইলগুলি এড়িয়ে যায়।
যদি এটি একটি বৃহত ডিরেক্টরি হয় তবে আপনি একাধিক প্রসেসরের সাথে চলমান বিবেচনা করতে পারেন:
find . -type f -print0 | xargs -0 -n 1 -P 4 dos2unix
এটি একবারে 1 টি ফাইল পাস করবে এবং 4 টি প্রসেসর ব্যবহার করবে।
nবা দুটি মাত্রার অর্ডার দিয়ে এটিকে ধাক্কা দেব (আমরা এখানে কতগুলি ফাইলের বিষয়ে কথা বলছি তার উপর নির্ভর করে)
আমি ডস 2 ইউনিক্স দ্বারা দুর্বলভাবে সন্তুষ্ট হওয়ার কারণ হিসাবে, আমি আমার নিজস্ব সাধারণ ইউটিলিটিটি আউট করেছি। গতি এবং পূর্বাভাসের কয়েকটি সুবিধা বাদে বাক্য গঠনটিও কিছুটা সহজ:
endlines unix *
এবং আপনি যদি এটি উপ-ডিরেক্টরিতে নেমে যেতে চান (লুকানো ডায়ারগুলি এবং অ-পাঠ্য ফাইলগুলি এড়িয়ে যাওয়া):
endlines unix -r .
endlineshttps://github.com/mdolidon/endlines এখানে উপলব্ধ
dos2unix? সত্যই কৌতূহলী।
dos2unixরকমের ক্ষমতা সহ অনেকগুলি আলাদা আলাদা রয়েছে (কিছু উদাহরণস্বরূপ ইউটিএফ 32 পড়েন, কিছু কিছু করেন না; শেষরেখাগুলি দেয় না)। কেবল একটিই রয়েছে endlines, যা ক্ষমতাগুলি সুপরিচিত। ইনপুট 2 / উদার, সব dos2unixহয় না । 3 / দক্ষ ফাইল ট্রি এক্সপ্লোরেশন, কয়েক হাজার ফাইলে দ্রুত এবং ব্যবহারিক হতে ডিজাইন করা। ওএসএক্স-এর বাক্সের বাইরে 4 / রানআউট - যা এখন ব্রু প্যাকেজটির উপস্থিতি কম গুরুত্বপূর্ণ।
লুকানো ফাইল এবং ফোল্ডারগুলি এড়ানো সম্ভবত সেরা, যেমন .git.ব্যবহারের পরিবর্তে findআপনার bashসংস্করণটি যদি সাম্প্রতিক পর্যায়ে হয় বা আপনি ব্যবহার করেন তবে zshকেবল করুন:
dos2unix **
নোট করুন যে বাশের জন্য এটির প্রয়োজন হবে:
shopt -s globstar
.... তবে এটি একটি দরকারী যথেষ্ট বৈশিষ্ট্য যা আপনার সততার সাথে আপনার .bashrcযেকোন উপায়ে রাখা উচিত ।
আপনি যদি লুকানো ফাইল এবং ফোল্ডারগুলি এড়িয়ে যেতে না চান তবে আপনি এখনও গণ্ডগোল করতে চান না find(এবং আমি আপনাকে দোষ দেব না), আপনি কেবল লুকানো এন্ট্রি মেলে একটি দ্বিতীয় পুনরাবৃত্ত-গ্লোব যুক্তি সরবরাহ করতে পারেন :
dos2unix ** **/.*
মনে রাখবেন যে উভয় ক্ষেত্রেই গ্লোব ডিরেক্টরিগুলি অন্তর্ভুক্ত করার জন্য প্রসারিত হবে, সুতরাং আপনি নীচের সতর্কতাটি দেখতে পাবেন (সম্ভাব্যত বহু বার) Skipping <dir>, not a regular file.
dos2unixএমন একধরনের নাম রয়েছে যা যুক্তিগুলি কীভাবে প্রসারিত হবে তা প্রভাবিত করে। type dos2unixআপনার সিস্টেমে আউটপুট কি ?
**পরিবর্তে find"যেমন লুকানো ফাইল এবং ফোল্ডার, এড়িয়ে যান হয় .git"। dos2unixলুকানো ফাইলগুলি কখনও দেখেন না, কারণ **এগুলি প্রদর্শন করার জন্য প্রসারিত হয় না। আপনি যদি চান স্বয়ংক্রিয়ভাবে চালানোর জন্য dos2unixলুকানো ফাইল এবং ফোল্ডার উপর, আপনি ব্যবহার করতে পারেন findবা প্রসারিত হবে শুধুমাত্র লুকানো ফাইল এবং ফোল্ডার সহ (রুট Dir), বর্তমান ফোল্ডারে (পিতা বা মাতা Dir), এবং অন্য কোন লুকানো এন্ট্রি। dos2unix ** **/.***/.*...
dos2unixকেবল ছাপে Skipping <dir>, not a regular file.একটি ডিরেক্টরি করলে রান, তাই চলমান ..এবং .নিরাপদ।) এ ছাড়া, মিশ্রন lsএকটি উল্লিখিত glob সাথে আছেন না কিভাবে উল্লিখিত glob সম্প্রসারিত হয় চেক করতে একটি ভালো উপায়; echoপরিবর্তে ব্যবহার করুন: থেকে প্রাপ্ত echo **আর্গুমেন্ট মুদ্রণ করবে । dos2unixdos2unix **
**এবং ব্যবহারটি echoএটি পরিষ্কার করে।
একটি সাধারণ ব্যবহারের ক্ষেত্রে গিট সংগ্রহস্থলের প্রতিশ্রুতিবদ্ধ সমস্ত ফাইলের জন্য লাইন শেষ মানক হিসাবে দেখা যায় :
git ls-files | xargs dos2unix
মনে রাখবেন যে নির্দিষ্ট ফাইল (যেমন *.sln, *.bat) ইত্যাদি করা হয় শুধুমাত্র উইন্ডোজ অপারেটিং সিস্টেমে ব্যবহার করা হয় এবং উচিত রাখাCRLF বিভক্তি:
git ls-files '*.sln' '*.bat' | xargs unix2dos
প্রয়োজনে ব্যবহার করুন .gitattributes
যে কোনও সোলারিস ব্যবহারকারীর জন্য (5..১০ ব্যবহার করছি) আরও নতুন সংস্করণে, পাশাপাশি অন্যান্য ইউনিক্স সিস্টেমেও প্রয়োগ হতে পারে:
ডস 2 ইউনিক্স ফাইলটি ওভাররাইট করার জন্য ডিফল্ট হয় না, এটি কেবল আপডেট সংস্করণটি স্টডআউটে মুদ্রণ করবে, সুতরাং আপনাকে উত্স এবং লক্ষ্য নির্দিষ্ট করতে হবে, অর্থাত্ একই নামটি দু'বার:
find . -type f -exec dos2unix {} {} \;
for FILE in /var/www/html/files/*
do
/usr/bin/dos2unix FILE
done
আমি এটি এক মিলিয়ন বারের মতো গুগল করেছি, সুতরাং আমার সমাধানটি হ'ল আপনার পরিবেশে এই বাশ ফাংশনটি রাখা।
.bashrcবা .profileবা যাই হোক না কেন
dos2unixd() {
find $1 -type f -print0 | xargs -0 dos2unix
}
ব্যবহার
$ dos2unixd ./somepath
এইভাবে এখনও আপনার কাছে মূল কমান্ড রয়েছে dos2unixএবং এটি এটিকে মনে রাখা সহজ dos2unixd।
কোনও সাব-ডিরেক্টরি না থাকলে আপনিও নিতে পারেন
ls | xargs -I {} dos2unix "{}"
dos2unix *তবে সরল এবং আসলে এর চেয়ে আরও শক্তিশালী হবে। (এটি সাধারণত আউটপুটটি পাইপ করার পরামর্শ দেওয়া হয় না ls, কারণ এটি একটি ফর্ম্যাটিং সরঞ্জাম এবং *প্রোগ্রাম্যাটিক ব্যবহারের জন্য আরও নির্ভরযোগ্য))
find . -type f -print0 | xargs -0 dos2unixআমি মনে করি সমস্যার সমাধান করবে would