Chuyển đổi đệ quy các tệp từ kết thúc dòng dos sang kết thúc dòng unix


11

Tôi đang tìm kiếm một lệnh mà tôi có thể sử dụng để chạy trên toàn bộ thư mục và thư mục con sẽ chuyển đổi tất cả các kết thúc dòng từ DOS sang UNIX.

Nó sẽ có thể phát hiện nếu một tập tin là văn bản hoặc nhị phân.

Tôi đã cài đặt dos2unixbằng macports nhưng có vẻ như nó bỏ lỡ tùy chọn đệ quy.


Xác định cách một tập tin là văn bản hoặc nhị phân?
dùng151019

Văn bản: Không có ASCII dưới 32, ngoại trừ TAB, CR, LF.
Max Ried

Câu trả lời:


22

Hãy thử find . -name "*" -type f -exec dos2unix {} \;.


Trong trường hợp dos2unixkhông có sẵn trên hệ thống của bạn, bạn có thể sử dụng tập lệnh sau (lưu dưới dạng dos2unixvà đặt thành thực thi):

#!/bin/sh

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

Đừng chạy lệnh này trong thư mục gốc của kho Git nếu không bạn sẽ phá hỏng kho lưu trữ của mình!
Nick

Ngoài ra, tôi đã có may mắn hơn khi sử dụng perl -pi -e 's/\r\n|\n|\r/\n/;' $*( nguồn )
Nick

1

Đây là mã shell một dòng find . -name "*" -type f -exec perl -pi -e 's/\r\n/\n/;' {} \;


Câu trả lời một dòng không được khuyến khích. Hãy thử thêm chi tiết, hoặc nhận xét về nó.
Max Ried

Hoạt động như quảng cáo! Còn gì để thêm? ;-)
Taiko

2
Hừm ... nó đã làm hỏng một số tập tin png. Xử lý cẩn thận
Taiko
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.