উত্তর:
এটি নির্ভর করে: ফাইলগুলি যদি সংস্করণ নিয়ন্ত্রণে থাকে তবে এটি ইতিহাসের দূষণমূলক সিদ্ধান্ত হতে পারে uting গিটের চেক-আউটে স্বয়ংক্রিয়ভাবে লাইন এন্ডিংগুলিকে রূপান্তর করার বিকল্প রয়েছে।
আপনি যদি যত্ন না নেন এবং দ্রুত রূপান্তর করতে চান তবে এমন প্রোগ্রাম রয়েছে যা fromdos/ todosএবং dos2unix/ unix2dosআপনার জন্য এটি করে। আপনি ব্যবহার করতে পারেন find: find . -type f -name '*.php' -exec dos2unix '{}' +।
সহ বেশ কয়েকটি ডেডিকেটেড প্রোগ্রাম রয়েছে
উপযুক্ত দিকনির্দেশের জন্য কেবল সরঞ্জামটি চয়ন করুন এবং কমান্ড লাইনে রূপান্তর করতে ফাইলগুলির নামটি দিন।
আপনার যদি না হয় তবে লিনাক্স বা সাইগউইন রয়েছে:
sed -i -e 's/\r\+$//' filename # dos|unix -> unix
sed -i -e 's/\r*$/\r/' filename # dos|unix -> dos
আপনার যদি পার্ল থাকে:
perl -i -pe 's/\r+$//' filename # dos|unix -> unix
perl -i -pe 's/\r*$/\r/' filename # dos|unix -> dos
ইউনিক্স থেকে ডস যেতে কেবলমাত্র পসিক্স সরঞ্জাম (ব্যাসিবক্স সহ) সহ, আপনাকে সিআর কমান্ডে সিআর অক্ষরটি অক্ষরে অক্ষরে পাস করতে হবে।
cr=$(echo | tr '\n' '\r')
sed -e "s/$cr*\$/$cr/" <filename >filename.dos
mv filename.dos filename
অন্য দিকে, আপনি কেবল সমস্ত সিআরগুলি মুছতে পারেন:
tr -d '\r' <filename >filename.dos
mv filename.dos filename
একবারে একই ডিরেক্টরিতে অনেকগুলি ফাইল রূপান্তর করতে আপনি ওয়াইল্ডকার্ড ব্যবহার করতে পারেন, যেমন
sed -i -e 's/\r\+$//' *.txt
বর্তমান ডিরেক্টরি এবং এর উপ-ডিরেক্টরিতে সমস্ত ফাইল রূপান্তর করতে, যদি আপনার শেলটি zsh হয়, আপনি **/যেমন ব্যবহার করতে পারেন
sed -i -e 's/\r\+$//' **/*.txt
আপনি **/ব্যাশ ≥4 এ ব্যবহার করতে পারেন তবে আপনাকে shopt -s globstarপ্রথমে চালানো দরকার (আপনি এই লাইনটি আপনারটিতে রাখতে পারেন ~/.bashrc)। আপনি **/ksh93 এ ব্যবহার করতে পারেন তবে আপনাকে set -o globstarপ্রথমে চালানো দরকার (আপনি এই লাইনটি নিজের মধ্যে রাখতে পারেন ~/.kshrc।
যদি আপনি কেবল সেই সরঞ্জামগুলি ব্যবহার করতে পারেন যাগুলির পুনঃনির্দেশের প্রয়োজন হয় তবে একটি forলুপ ব্যবহার করুন ।
for x in *.txt; do
tr -d '\r' <"$x" >"$x.dos"
mv -- "$x.dos" "$x"
done
**/কোন ফাইলটি রূপান্তর করতে হবে তা নির্বাচন করতে আপনার যদি আরও জটিল মেলানো বা না প্রয়োজন হয়, findকমান্ডটি ব্যবহার করুন । এখানে একটি লিনাক্স / Cygwin উদাহরণ যা বর্তমান ডিরেক্টরী অধীনে সমস্ত ফাইল এবং তার সাব যাও recursively পরিবর্তন করে বলা ফাইলের জন্য ছাড়া এর .oএবং সাবডিরেক্টরি নামক অধীনে bin।
find -name 'bin' -type d -prune -o \
\! -name '*.o' \
-exec sed -i -e 's/\r\+$//' {} +
এখানে একটি পসিক্স উদাহরণ। আমরা findএকটি শেল শুরু করতে বলি যা প্রয়োজনীয় পুনর্নির্দেশ সম্পাদন করতে পারে।
find -name 'bin' -type d -prune -o \
\! -name '*.o' \
-exec sh -c '
tr -d '\r' <"$0" >"$0.dos"
mv -- "$0.dos" "$0"
' {} \;
findশেল কমান্ডের একটি লুপ ব্যবহার করে আরও জটিল কোড ব্যয় করে আপনি পদ্ধতিটি কিছুটা দ্রুত করতে পারেন ।
find -name 'bin' -type d -prune -o \
\! -name '*.o' \
-exec sh -c '
for x; do
tr -d '\r' <"$x" >"$x.dos"
mv -- "$x.dos" "$x"
done
' _ {} +
যদি বলা হয় তবে উইনসপিও স্বয়ংক্রিয় রূপান্তর করবে ।
যদি আপনার ফাইলগুলি একই ডিরেক্টরিতে থাকে:
DIRECTORY=/your/directory
unix2dos $DIRECTORY/*