it-swarm.asia

تحويل النهايات خط يونيكس إلى ويندوز

لقد انتقلت مؤخرًا إلى نظام التشغيل Windows من نظام التشغيل Linux. لدي بعض الملفات مع CRLFs ، بعضها مع LFs وبعضها مختلط. هل هناك أداة مساعدة ستساعدني في العثور على جميع ملفات Unix-touch الخاصة بي وتحويلها إلى ملفات CRLF إنهاء المناسبة؟

الأداة يجب أن تعمل على ويندوز ، وليس لينكس. لقد انتقلت بالفعل. أفضل عدم تثبيت Cygwin إذا كان يمكنني تجنب ذلك.

37
Matthew Scouten

يمكنك تحويلها باستخدام الأداة unix2dos على نظام Linux الخاص بك. هناك unix2dosإصدارات متوفرة لنظام التشغيل Windows أيضًا.

إذا قمت بتثبيت Perl ، فيمكنك أيضًا استخدام الخطوط الملاحية المنتظمة هذه:

Perl -p -e 's/\n/\r\n/' < UNIX_LF.txt > WINDOWS_CRLF.txt
32
John T

إليك طريقة سهلة وسريعة.

قم بسحب الملف النصي وإفلاته في Chrome (لا أعرف عن المتصفحات الأخرى) ثم قص ولصق مرة أخرى في الملف الأصلي :)

17
user45832

أفضل طريقة للبحث بشكل متكرر خلال المجلدات والسماح بتصفية الملفات والسماح بالبحث البسيط عن "\ r\n" واستبدالها بـ "\ n" فقط كانت Notepad ++ .

يعد برنامج Notepad ++ أحد أفضل برامج المفكرة المجانية والمفتوحة المصدر لنظام التشغيل Windows. انها بسيطة جدا وقوية. انها تعاملت مع خط نهاية البحث/استبدال ما يرام. يقوم المقاول بفحص مجموعة من ملفات .c و .h في مستودعنا مع نهايات خطوط Linux\r\n ، ولكن نظرًا لأن معظم الأشخاص قاموا بالتوحيد القياسي على أدوات إنشاء Windows/Eclipse ، فلن يتم إنشاء الملفات حتى يتم تحويل نهايات الخطوط .

10
Matt

استخدم Swiss File Knife .

على سبيل المثال: sfk addcr -dir . -file .txt -norec
يغير LF النهايات إلى CR/LF لـ Windows ، على جميع ملفات .txt من الدليل الحالي ، لكن ليس ضمن الدلائل الفرعية (بدون تكرار).

لكن هذا البرنامج يفعل أكثر من ذلك بكثير.

8
harrymc

على Cygwin ، يمكنك التحويل بين ملفات Windows Unix و "DOS" AKA باستخدام اثنين من الأدوات المساعدة المضمنة:

تحويل إلى تنسيق CR/LF DOS:

u2d filename

تحويل مرة أخرى إلى تنسيق UNIX CR:

d2u filename

يتم ترك الملف في مكانه بنفس الاسم.

استمتع! الم العنق

6
Rick V

انا ذاهب لرمي هذا الحل هناك. بوابة سوف تفعل هذا. انظر هذا المنشور حول هذا الموضوع

من الناحية النظرية ، يمكنك القيام بذلك لتحويل شجرة بأكملها

cd root/of/tree
git init .
git add .
git commit -m "initial commit"
echo "* text eol=crlf" > .gitattributes
git rm --cached -r .
git reset --hard

قم بتغيير crlf إلى lf إذا كنت تريد الانتقال في الاتجاه الآخر. ملاحظة: لم تنته بعد ، استمر في القراءة

اكتب git status لمعرفة الملفات التي ستتأثر. قد تضطر إلى إضافة خطوط مثل

*.jpg binary
*.png binary
*.gif binary

إلخ إلى .gitattributes لتجنب تحويل ملفات معينة. يمكنك أيضًا تمييز ملفات معينة كنص صريح

*.md text
*.css text

ثم كرر هذين السطور بعد تحرير .gitattributes

git rm --cached -r .
git reset --hard

ثم استخدم git status مرة أخرى لمعرفة الملفات التي سيتم تغييرها. عندما تكون متأكدًا من أن جميع الملفات التي تريدها متأثرة يتم سردها بواسطة git status ، فعليك الالتزام بها

git add .
git commit -m "normalize line endings"

تحقق الآن من جميع الملفات مرة أخرى

git rm --cached -r .
git reset --hard

يجب أن يكون لديهم الآن أيًا كانت نهايات الخطوط المرغوبة

** ملاحظة: إذا كنت تستخدم بالفعل git تخطي أوامر git الثلاثة الأولى. إذا كنت لا تستخدم git ، فيمكنك الآن حذف الملف .gitattributes والمجلد .git.

** قم بنسخ ملفاتك احتياطيًا: git rm --cached -r يحذفها جميعًا (على الرغم من أنها من الناحية النظرية في git repo (مجلد .git) وهي الطريقة التي يتم بها استعادتها بواسطة آخر أمر git reset --hard. ويرجع السبب في ذلك إلى أنه من الأفضل أن يتم حذف الملفات. احتياطيا.

3
gman

يحتوي توزيع Linux الخاص بي على أدوات مساعدة صغيرة تسمى fromdos و todos التي أستخدمها لهذه المهمة.

1
geek

استخدم محرر نصوص يفهم كلتا نهايتي الخطوط مثل SciTE أو Notepad ++ إذا كنت لا تحتاج إلى تحويل كل سطر ينتهي في جميع ملفاتك ، ولكن لا تريد أن ترى الملف بأكمله مُجمّعًا في السطر الأول.

1
nelaaro

الحصول على AWK لنظام التشغيل Windows .

تحويل نهايات خطوط يونكس إلى نهايات خطوط ويندوز:

awk 'sub("$", "\r")' unixfile.txt > winfile.txt

تحويل نهايات خطوط Windows إلى نهايات خطوط Unix:

awk '{ sub("\r$", ""); print }' winfile.txt > unixfile.txt

لا تتضمن الإصدارات القديمة من awk الدالة sub. في مثل هذه الحالات ، استخدم نفس الأمر ، ولكن استبدل awk بـ gawk أو nawk.

المصدر

0
Neeme Praks

هناك العديد من الطرق لترجمة أحرف eoln في ملفات TEXT ، وكل شخص لديه مفضلة.

لكنني دائمًا ما أنقل الملفات من Linux إلى Windows في وضع BINARY ، ثم أفتح ملفات TEXT في Windows باستخدام محرر قادر على فتح كلا النوعين ، وحفظها في أي من النموذجين ، إذا لزم الأمر.

لقد استخدمت محرر ملفات المبرمجين لهذا الغرض ، لكن برنامج Notepad ++ يمكنه القيام بذلك أيضًا. يعد "الدفتر" مفيدًا أيضًا [على الأقل ، من أجل عرض LF ملفات منتهية].

أفكر في الملفات النصية البسيطة التي ربما تكون قد نشأت على نظام Linux ، وأحتاج إلى أن تكون قابلة للقراءة في العالم (defacto standard) لنظام Windows. لست متأكدًا مما تعنيه عبارة "الملفات ذات اللمس الواحد".

0
pavium

على ويكيبيديا هناك حل في كمد:

TYPE unix_file | FIND /V "" > dos_file

في PowerShell ، توجد عدة طرق للقيام بذلك من خلال عكس ما تم فعله في هذا السؤال .

(Get-Content $file -Raw).Replace("`n", "`r`n") | Set-Content $path -Force

(Get-Content $infile) -join "`r`n" > $outfile

$text = [IO.File]::ReadAllText($original_file) -replace "`n", "`r`n"
[IO.File]::WriteAllText($original_file, $text)

من الممكن أيضًا القيام بذلك في VBScript و JScript وهي أيضًا أدوات المتوفرة بالفعل في Windows دون تثبيت تطبيق تابع لجهة أخرى.

0
phuclv

لتقديم المزيد من الخيارات (على الرغم من أنني استمتعت بأفضل حال إجابة الاختراق user45832 ):

المحولات عبر الإنترنت

أعتقد أن برنامج FTP GUIسيقوم بذلك تلقائيًا

خط واحد للدفعة/DOS (يزيل الأسطر الفارغة) :

FOR /F "eol= delims= usebackq" %a IN (infile.txt) DO (ECHO %a>> outfile.txt)

بوويرشيل:

gc infile.txt | %{$_.split("`n")} | Out-File outfile.txt

حصلت على آخر اثنين من هنا

0
gregg