ฉันจะแปลงไฟล์ทั้งหมดในโฟลเดอร์เป็นจุดสิ้นสุดบรรทัดอื่นได้อย่างไร (บน Windows)


15

ฉันจะแปลงไฟล์ทั้งหมดในโฟลเดอร์เป็นจุดสิ้นสุดบรรทัดอื่น (linux หรือ mac) ได้อย่างไร ฉันใช้ Windows

ตอนนี้แนวทางของฉันคือใช้ Winscp เพื่อคัดลอกไปยังกล่อง linux แล้วเรียกใช้ dos2unix ซ้ำในโฟลเดอร์


เสียงเหมือนวิธีการปัจจุบันของคุณเป็นรักที่ดี
Ramhound

คำตอบ:


17

ติดตั้ง Cygwin และ Dos2unix ใน Cygwin แล้ว

find . -type f -exec dos2unix {} \;

1
คุณอาจต้องการ-maxdepth 1มันไม่ผ่านไดเรกทอรีย่อย
barlop

1
ขอบคุณสำหรับทิป. แต่กรณีการใช้งานของฉันต้องใช้ไฟล์ทั้งหมดรวมทั้งผู้ที่อยู่ในโฟลเดอร์ย่อย ..
Satish

การติดตั้ง Cygwin เพียงเพื่อเรียกใช้โปรแกรมเดียวดูเหมือนว่ายิ่งเกินความจำเป็นมากสำหรับฉัน ฉันอยากจะแนะนำเพียงแค่ใช้รุ่น DOS ของโปรแกรมเดียวกันมากแล้วคำสั่งหนึ่งบรรทัดในเปลือกเพื่อเรียกใช้กับไฟล์ทั้งหมด
ริชาร์ด

1
@ ริชาร์ด: จริง แต่พวกเราหลายคนมี Cygwin และติดตั้งเครื่องมือแล้ว คุณสามารถลองได้เช่นกัน มันจะทำให้ Windows ของคุณ Linux-y และดังนั้นจึงทนได้มากขึ้น นอกจากนี้คุณไม่จำเป็นต้องมองหาวิธีแก้ปัญหาเฉพาะสำหรับ Windows สำหรับปัญหาบรรทัดคำสั่งของคุณ
John Red

5

คุณสามารถติดตั้งgit bashแทน cygwin32 (หรือคล้ายกัน) บน Windows มันมาพร้อมกับคำสั่งยูนิกซ์เหมือนหลาย (เช่นfind, dos2unixฯลฯ ) ในbashโหมดการจำลองแบบ เมื่อติดตั้งแล้วการแปลงไฟล์จาก Windows ไปเป็นจุดสิ้นสุดไฟล์ Unix ควรเป็นเรื่องง่าย

สมมติว่าคุณมีไฟล์ของคุณ (ลงท้ายด้วย. javaต่อท้าย) ในโฟลเดอร์ทรีชื่อsrcและคุณต้องการแปลงไฟล์ตอนจบจาก Windows เป็น Unix

  1. ค้นหาsrcใน Windows Explorer
  2. คลิกขวาและเปิด Git Bash ในโฟลเดอร์นั้นจากเมนูบริบทของ Windows
  3. find . -name "*.java" -exec dos2unix {} \;เรียกใช้:

และนั่นมัน!


0

คำตอบของคุณในการใช้ dos2unix และ unix2dos นั้นยอดเยี่ยม

นี่เป็นอีกวิธีหนึ่งตามคำตอบของคุณ

คุณสามารถใช้ Gnuwin32 ได้อย่างสนุกสนานพอ ๆ กับแพ็คเกจ Gnuwin32 ที่มีคำสั่งคือ Cygutils http://gnuwin32.sourceforge.net/packages/cygutils.htm ดังนั้นคุณจะได้รับ unix2dos.exe และ dos2unix.exe ใน C: \ Program Files .... \ GnuWin32 \ bin และในเส้นทางของคุณ

C:\somedir>dir<ENTER>
 Volume in drive C has no label.
 Volume Serial Number is DC46-3C68

 Directory of C:\somedir

05/23/2014  01:10 AM    <DIR>          .
05/23/2014  01:10 AM    <DIR>          ..
05/23/2014  01:10 AM                 4 file1
               1 File(s)              4 bytes
               3 Dir(s)  196,129,951,744 bytes free

Do this command to go from dos2unix
C:\somedir>for %f in (*) do dos2unix %f <ENTER>

C:\somedir>dos2unix file1 <-- This runs automatically from you doing the above command
file1: done.

And do this command to go from unix2dos
C:\somedir>for %f in (*) do unix2dos %f <ENTER>

C:\somedir>unix2dos file1 <-- This runs automatically from you doing the above command
file1: done.

C:\somedir>

และเพื่อทดสอบว่าของคุณสำหรับ% f จะทำสิ่งที่คุณต้องการหรือไม่จากนั้นใช้ echo หรือ @ECHO เช่น
สำหรับ% f ใน (*) ทำ @ECHO unix2dos% f

และคุณสามารถใช้ xxd เพื่อสร้างไฟล์และทดสอบว่าพวกเขาแปลงแล้ว xxd สำหรับ windows มาพร้อมกับ VIM C: \ Program "" Files \ vim \ vim74 \ xxd.exe

so, i'll create a file, I like this style of command is it allows me to 
create whateer file I want, a dos one or a unix one or anything.  
61 is hex for 'a'       
C:\somedir>echo 610d0a| xxd -r -p >testfile <ENTER>

check the file raw, in its hex
C:\somedir>cat testfile | xxd -p <ENTER>
610d0a

check the file in ascii or unicode
C:\somedir>cat testfile <ENTER>
a

and the following commands just prove that dos2unix and unix2dos work/are working fine.  
C:\somedir>dos2unix testfile <ENTER>
testfile: done.

C:\somedir>cat testfile | xxd -p <ENTER>
610a

C:\somedir>unix2dos testfile <ENTER>
testfile: done.

C:\somedir>cat testfile | xxd -p <ENTER>
610d0a

C:\somedir>

หมายเหตุ - ในกรณีที่ใช้ * distix โปรดดูที่ apt-get (apt-cache search dos2unix) แพ็กเกจนั้นแน่นอน (อาจแปลกใจ!) dos2unix (ติดตั้งด้วย apt-get ติดตั้ง dos2unix) และที่รวมกับ dos2unix ปฏิบัติการ, ปฏิบัติการ unix2dos หากคุณทำการค้นหา apt-cache unix2dos มันจะแสดงแพ็กเกจ dos2unix

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.