การแปลงไฟล์ซ้ำ ๆ จากปลายสาย DOS ไปจนถึงปลายสายยูนิกซ์


11

ฉันกำลังมองหาคำสั่งที่ฉันสามารถใช้เพื่อเรียกใช้ในไดเรกทอรีทั้งหมดและไดเรกทอรีย่อยที่จะแปลงการสิ้นสุดบรรทัดทั้งหมดจาก DOS เป็น UNIX

มันควรจะสามารถตรวจสอบว่าไฟล์เป็นข้อความหรือไบนารี

ฉันติดตั้งdos2unixโดยใช้ macports แต่ดูเหมือนว่าจะพลาดตัวเลือกแบบเรียกซ้ำ


กำหนดว่าไฟล์เป็นข้อความหรือไบนารีได้อย่างไร?
user151019

ข้อความ: ไม่มี ASCII ต่ำกว่า 32 ยกเว้น TAB, CR, LF
Max Ried

คำตอบ:


22

ลองfind . -name "*" -type f -exec dos2unix {} \;ดู


ในกรณีที่dos2unixไม่มีอยู่ในระบบของคุณคุณสามารถใช้สคริปต์ต่อไปนี้ (บันทึกเป็นdos2unixและตั้งเป็นปฏิบัติการ):

#!/bin/sh

perl -pi -e 's/\r\n/\n/;' $*

อย่าเรียกใช้คำสั่งนี้ในรูทของที่เก็บ Git มิฉะนั้นคุณจะทำลายที่เก็บของคุณ!
Nick

นอกจากนี้ฉันโชคดีกว่าที่ใช้perl -pi -e 's/\r\n|\n|\r/\n/;' $*( ซอร์ส )
นิค

1

นี่คือหนึ่งบรรทัดรหัสเชลล์ find . -name "*" -type f -exec perl -pi -e 's/\r\n/\n/;' {} \;


คำตอบบรรทัดเดียวหมดกำลังใจ ลองเพิ่มรายละเอียดเพิ่มเติมหรือแสดงความคิดเห็น
Max Ried

ทำงานตามที่โฆษณาไว้! มีอะไรเพิ่มอีกบ้าง ;-)
Taiko

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