Windows के लिए यूनिक्स लाइन अंत परिवर्तित करें


38

मैं हाल ही में लिनक्स से विंडोज पर वापस आया। मेरे पास CRLFs के साथ कुछ फाइलें हैं, कुछ LFs के साथ और कुछ जो मिश्रित हैं। क्या कोई उपयोगिता है जो मुझे मेरी सभी यूनिक्स-छुआ हुई फाइलों को खोजने और उन्हें उचित CRLF समाप्त फ़ाइलों में बदलने में मदद करेगी?

उपयोगिता विंडोज पर चलना चाहिए, लिनक्स पर नहीं। मैं पहले ही चल चुका हूं। अगर मैं इससे बच सकता हूं तो मैं साइगविन को स्थापित नहीं करूंगा।


1
संबंधित: देखें superuser.com/questions/38744 superuser.com/questions/27060 superuser.com/questions/52044 ... उन में उल्लिखित कोई भी उपकरण जो आप करना चाहते हैं उसे पूरा करने के लिए उलटा किया जा सकता है
quixixix

डुप्लीकेट प्रश्न
उकंठ

उन तथाकथित डुप्लिकेट प्रश्नों के समाधान सभी लिनक्स प्लेटफ़ॉर्म पर चलते हैं या विपरीत रूपांतरण को सुधारते हैं। मेरे पास कोई और लिनक्स नहीं है। मेरे पास खिड़कियां हैं।
मैथ्यू स्काउटेन

1
वे Cygwin, GnuWin32, UnxUtils या इस तरह के माध्यम से विंडोज के लिए उपलब्ध हैं। मेरा मानना ​​है कि पॉवरशेल स्क्रिप्ट हैं जो ऐसा कर सकती हैं, हालांकि मुझे इसके बारे में पर्याप्त जानकारी नहीं है कि कोई लिंक प्रदान करें।
क्वैक क्विक्सोटे

1
@quack: यह प्रश्न विशेष रूप से बताता है कि उपयोगकर्ता ऐसी चीज की तलाश कर रहा है जो विंडोज उपयोगिता का उपयोग करते हुए विंडोज पर काम करेगी।
ब्रायन लेसी

जवाबों:


34

आप उन्हें unix2dosअपने लिनक्स प्लेटफॉर्म पर उपयोगिता के साथ परिवर्तित कर सकते हैं । unix2dos विंडोज के लिए भी संस्करण उपलब्ध हैं ।

यदि आपके पास पर्ल स्थापित है, तो आप इस एक लाइनर का उपयोग भी कर सकते हैं:

perl -p -e 's/\n/\r\n/' < UNIX_LF.txt > WINDOWS_CRLF.txt

मैंने ऐसा ही कुछ किया, लेकिन मैंने अजगर का इस्तेमाल किया।
मैथ्यू स्काउटेन

2
@ मैट्टू स्काउटन: तो ... आपको एक यूनिक्स उपयोगिता मिली जो खिड़कियों पर चलती है! बधाई!
क्वैक कोटे

8
हां और ना। मैं अपनी धमाकेदार उपयोगिता को नष्ट कर देता हूं। मैं शुरू से ऐसा कर सकता था, लेकिन मैं 30 मिनट बचाने की उम्मीद कर रहा था। दुर्भाग्य से मैं उपलब्ध किसी भी उपयोगिताओं से खुश नहीं था। निकटतम मुझे निर्देशिका में किसी भी बाइनरी फ़ाइलों को दूषित मिला।
मैथ्यू स्काउटैन

Dos2unix और unix2dos के साथ कनवर्ट करने में समस्याएं हैं - यदि फ़ाइल में CRLF और LF मिलाया गया है, तो कुछ ऐसी घटनाएं हो सकती हैं जिन्हें प्रतिस्थापित नहीं किया जाएगा।
pbies

17

यहाँ एक आसान और त्वरित तरीका है।

Chrome में पाठ फ़ाइल को खींचें और छोड़ें (मुझे अन्य ब्राउज़रों के बारे में पता नहीं है) और फिर मूल फ़ाइल में कट और पेस्ट करें :)


2
hehe ... इस जवाब ने मुझे
लोल

सभी ब्राउज़र IE सहित, यूनिक्स लाइन के अंत को ठीक पढ़ सकते हैं। लेकिन फिर भी वर्डपैड ऐसा कर सकता है, और इसलिए आधुनिक नोटपैड भी । यहाँ क्या महत्वपूर्ण है कि स्वचालित रूप से कई फ़ाइलों को कैसे परिवर्तित किया जाए
फुल्विक

10

जो मैंने फ़ोल्डर के माध्यम से पुनरावृत्ति करने, फ़ाइल फ़िल्टर की अनुमति देने और "\ r \ n" के लिए एक सरल खोज की अनुमति देने और इसे सिर्फ "\ n" के साथ बदलने के लिए सबसे अच्छा पाया, वह था नोटपैड ++

नोटपैड ++ विंडोज के लिए सबसे अच्छा, मुफ्त, मुक्त स्रोत नोटपैड कार्यक्रमों में से एक है। यह बहुत सरल और शक्तिशाली है। इसने खोज समाप्त करने वाली लाइन को संभाला / ठीक ठीक प्रतिस्थापित किया। एक ठेकेदार .c और .h फ़ाइलों का एक गुच्छा लिनक्स \ r \ n लाइन एंडिंग्स के साथ हमारी रिपॉजिटरी की जाँच करता है, लेकिन चूंकि ज्यादातर लोगों ने विंडोज / एक्लिप्स बिल्ड टूल्स पर मानकीकृत किया है, लाइन एंडिंग परिवर्तित नहीं होने तक फाइलें नहीं बनेंगी। ।


8
मुझे लगता है कि आपने वहाँ के अंत को उलट दिया है: linux \ n है, विंडोज़ \ r \ n है
मैथ्यू स्काउटन

10
नोटपैड ++ में एक सरल Edit -> EOL Conversionमेनू भी है यदि कनवर्ट करने के लिए फ़ाइलों की संख्या छोटी है।
user1071136

8

स्विस फाइल चाकू का उपयोग करें ।

उदाहरण के लिए: sfk addcr -dir . -file .txt -norec
वर्तमान निर्देशिका की सभी .txt फ़ाइलों पर, विंडोज के लिए CR / LF में LF एंडिंग को बदलता है, लेकिन उपनिर्देशिकाओं (कोई पुनरावृत्ति) के भीतर नहीं।

लेकिन यह कार्यक्रम सिर्फ इससे बहुत कुछ करता है।


मैं निर्दिष्ट नहीं करता हूं -norecक्योंकि मैं पुनरावृत्ति चाहता हूं लेकिन ऐसा प्रतीत नहीं होता है
Csaba Toth

6

साइग्विन पर, आप यूनिक्स और "डॉस" एकेए विंडोज फ़ाइलों के बीच दो अंतर्निहित उपयोगिताओं का उपयोग करके परिवर्तित कर सकते हैं:

डॉस सीआर / एलएफ प्रारूप में परिवर्तित करें:

u2d filename

यूनिक्स सीआर प्रारूप में वापस कन्वर्ट:

d2u filename

फ़ाइल को उसी नाम से छोड़ दिया जाता है।

का आनंद लें! पोरौटी


इसे कभी-कभी कहा जाता है dos2unixया unix2dosयदि आप इसे u2d या d2u नहीं पाते हैं। वहाँ भी हैunix2mac
gtatr

3

मैं इस समाधान को वहां फेंकने जा रहा हूं। Git ऐसा करेगा। इसके बारे में यह पोस्ट देखें

तो सैद्धांतिक रूप से आप ऐसा कर सकते हैं एक पूरे पेड़ को बदलने के लिए

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

फिर संपादित करने के बाद बस इन 2 पंक्तियों को दोहराएं .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 का उपयोग कर रहे थे तो पहले 3 कमांड git कमांड को छोड़ दें। यदि आप git का उपयोग नहीं कर रहे थे तो अब आप .gitattributesफ़ाइल और .gitफ़ोल्डर को हटा सकते हैं ।

** अपनी फ़ाइलों का बैक अप लें: git rm --cached -rउन सभी को हटा देता है (हालाँकि वे सैद्धांतिक रूप से आपके गिट रेपो (.it फोल्डर) में हैं) कि वे किस तरह से अंतिम कमांड द्वारा बहाल हो जाते हैं git reset --hard। यह सिर्फ इसलिए कि फाइलें डिलीट हो रही हैं, यह संभवत: उन्हें वापस करने के लिए सबसे अच्छा है। अप।


1

एक टेक्स्ट एडिटर का उपयोग करें जो SciTE , या Notepad ++ जैसे दोनों लाइन एंडिंग को समझता है , अगर आपको अपनी सभी फाइलों में समाप्त होने वाली सभी लाइन को कन्वर्ट करने की आवश्यकता नहीं है, लेकिन बस पूरी फाइल को पहली लाइन पर बँधे हुए देखना नहीं चाहते हैं।


यही बात उन्होंने तब कही जब लिंडक्स में स्विच करते समय मुझे उलटा समस्या हुई। मैं ऐसे टूल्स में भाग लेता रहा, जिनमें गलत लाइन एंडिंग की समस्या थी। और कुछ भी नहीं मिश्रित लाइन अंत काफी संभालती है।
मैथ्यू स्काउटेन

@ मैथ्यू मैं जानता हूं कि स्काइट हैंडल यूनिक्स / विंडोज़ लाइन एंडिंग को सही ढंग से करता है। मैं उस उद्देश्य के लिए इसका उपयोग करता हूं जब मैं मेजबान सिस्टम पर फाइलों को संपादित करते हुए लिनक्स में चलाता हूं।
नेलारो

मुझे यकीन है कि आपके द्वारा सुझाए गए संपादक ठीक काम करेंगे। लेकिन कुछ बिंदु पर, मुझे टेक्स्टफाइल को किसी अन्य उपकरण को खिलाने की आवश्यकता होगी, और वह उपकरण नहीं होगा। उस समय, एक टेक्स्ट एडिटर का होना, जो चीजों को अच्छी तरह से हैंडल करता है, समस्या को छुपाकर इसे और भी बदतर बना देगा। और मैं शर्त लगाऊंगा कि यह अभी भी मिश्रित अंत को बुरी तरह से संभालता है (या कम से कम quirks के साथ)।
मैथ्यू स्काउटन

1
लेट एंडिंग्स को बदलने के लिए नोटपैड ++ विकल्प के लिए +1। और यहाँ और अधिक विशेष रूप कैसे करना है ( "विधि 2" देखें): staffwww.fullcoll.edu/brippe/csci123/saveAsUnix.aspx
WIP

नोटपैड ++ में पहले से ही लाइन एंडिंग को बदलने का उपाय है, अन्य चीजों के बीच एनकोडिंग
फुल्विक

0

TEXT फ़ाइलों में eoln वर्णों का अनुवाद करने के कई तरीके हैं, और हर किसी का पसंदीदा है।

लेकिन मैं हमेशा बायनेरी मोड में लिनक्स से विंडोज में फाइल ट्रांसफर करता हूं, फिर मैं विंडोज में TEXT फाइल को एडिटर के साथ खोलता हूं, जो दोनों प्रकार के खोलने में सक्षम है, और यदि आवश्यक हो तो उन्हें किसी भी रूप में सहेजना।

मैंने इसके लिए प्रोग्रामर फ़ाइल संपादक का उपयोग किया, लेकिन नोटपैड ++ इसे भी कर सकता है। वर्डपैड भी उपयोगी है [कम से कम, एलएफ समाप्त फाइलें देखने के लिए ]।

मैं सरल पाठ फ़ाइलों के बारे में सोच रहा हूं जो शायद लिनक्स पर उत्पन्न हुई हैं, और विंडोज की दुनिया (डीफैक्टो मानक) में पठनीय होने की आवश्यकता है। मुझे यकीन नहीं है कि आप 'यूनिक्स-छुआ फ़ाइलों' से क्या मतलब है।


इस विधि के साथ समस्या यह है कि यह एक समय में केवल एक फ़ाइल करता है।
मैथ्यू स्काउटेन

files यूनिक्स-टच फाइलें ’एलएफ-ओनली और मिश्रित सीआरएलएफ-एलएफ दोनों फाइलों के लिए मेरा शब्द है। एक बार जब एक फाइल को यूनिक्स-ओआईडी टूल्स में एड किया जाता है, तो वह एलएफ-ओनली लाइनों के साथ 'संक्रमित' हो जाता है।
मैथ्यू स्काउटेन

2
मैं वास्तव में क्या कह रहा था कि पाठ फ़ाइलों को देखने के लिए सही सॉफ़्टवेयर का चयन करके, उन्हें बिल्कुल भी परिवर्तित करने की आवश्यकता नहीं है। BTW, मैंने आपको CRLF की समाप्ति फ़ाइलों को 'उचित' बताने के लिए कार्य करने से परहेज किया। यह पूरी तरह से आपके दृष्टिकोण पर निर्भर करता है। प्रत्येक विधि अपने स्वयं के ओएस में उचित है। जब किसी फ़ाइल को किसी भिन्न OS में ले जाया जाता है, तो हम पाते हैं कि Win / Mac / Linux सभी भिन्न हैं। मुझे संदेह है कि यूनिक्स / लिनक्स विधि मूल एक है।
पेवियम

3
आपको गलत शक है। ASCII मानक मूल रूप से टेलेटाइप मशीनों, और अनिवार्य CRLF के लिए विकसित किया गया था। अधिकांश इंटरनेट प्रोटोकॉल (HTTP, SMTP, FTP, IRC और कई अन्य सहित) को भी CRLF समाप्ति की आवश्यकता होती है (अधिकांश कार्यान्वयन गैर-अनुपालन यूनिक्स कार्यक्रमों के साथ संगतता के लिए नंगे LF को स्वीकार करते हैं)। इस मामले में, विंडोज मानक का पालन कर रहा है और यूनिक्स और मैक इसे तोड़ रहे हैं।
मैथ्यू स्काउटन

0

अधिक विकल्प प्रदान करने के लिए (भले ही मुझे user45832 का हैक उत्तर सबसे अच्छा लगा हो ):

ऑनलाइन कन्वर्टर्स

मुझे लगता है कि GUI FTP प्रोग्राम इसे स्वचालित रूप से करेगा

बैच / डॉस एक-लाइनर (खाली लाइनों को हटाता है) :

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

शक्ति कोशिका:

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

पिछले दो यहाँ से


0

विंडोज के लिए AWK प्राप्त करें ।

यूनिक्स लाइन एंडिंग को विंडोज लाइन एंडिंग में बदलें:

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

विंडोज लाइन अंत को यूनिक्स लाइन अंत में परिवर्तित करें:

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

पुराने संस्करणों में फ़ंक्शन awkशामिल नहीं है sub। ऐसे मामलों में, एक ही कमांड का उपयोग करें, लेकिन awkसाथ में बदलें gawkया nawk

स्रोत


0

विकिपीडिया पर cmd में एक समाधान है:

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 में ऐसा करना भी संभव है, जो कि ऐसे टूल भी हैं जो पहले से ही विंडोज में थर्ड-पार्टी एप्लिकेशन इंस्टॉल किए बिना उपलब्ध हैं।


0

मेरे Linux वितरण दो छोटे उपयोगिताओं कहा जाता है fromdosऔर todosयह है कि मैं इस कार्य के लिए इस्तेमाल करते हैं।


ओपी एक विंडोज टूल के
फुकुव्व

-2

मैं फाइल को 'एडिट' में खोलता था और सेव करता था कि जॉब हो गई ...


"संपादित करें" क्या है? विंडोज़ 10 में ऐसा कोई टूल नहीं है
phuclv


जाहिर है मैं editडॉस में इस्तेमाल किया है , लेकिन यह सवाल विंडोज के
phuclv

1
editWindows का हिस्सा हुआ करता था Windows XP। मेरा जवाब लगभग 8 साल पुराना है। उस समय editमें कई मामलों में विंडोज इंस्टॉलेशन का हिस्सा था ...
Radek
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.