Tôi có một vài tệp mà tôi muốn chuyển đổi từ Dos sang Unix. Có bất kỳ API hoặc phương pháp nào sẽ giúp tôi thực hiện việc này không?Cách chuyển đổi tệp từ Dos sang Unix
Trả lời
Có các công cụ Linux có thể thực hiện việc này (ví dụ: dos2unix
).
Trong Java, bạn có thể thực hiện với String.replaceAll()
.
DOS sử dụng \r\n
để chấm dứt dòng, trong khi UNIX sử dụng một đơn \n
.
String unixText = windowsText.replaceAll("\r\n", "\n"); // DOS2UNIX
Vì vậy, không, không tồn tại API. Có, nó đã chết dễ dàng.
Tôi có cần phải mở tất cả các tệp một và thay thếAll ("\ r \ n "," \ n "). –
Vâng, tất nhiên. Cũng xin lưu ý rằng điều này chỉ có ý nghĩa đối với các tệp văn bản ASCII! – parasietje
điều gì về hỗ trợ mẫu tệp để chỉnh sửa nhiều tệp? – jontejj
Hầu hết các bản phân phối unix/linux đều có tiện ích có tên là unix2dos
và dos2unix
lệnh.
CHỈNH SỬA: Chỉ cần sao chép tệp của bạn vào máy unix và chạy dos2unix *
.
Bạn cũng có thể tìm thấy tiện ích này cho Windows và thực hiện tương tự.
Có một tiện ích/lệnh trong Linux/Unix được gọi là dos2unix
sẽ giúp bạn chuyển đổi tệp của bạn từ dos sang định dạng unix. Để cài đặt chỉ cần gõ trong giao diện điều khiển (bạn có thể cần quyền root)
yum install dos2unix
Để thực hiện chuyển đổi, bạn phải sử dụng lệnh dos2unix theo sau tên tệp. Ví dụ
[[email protected] ~]$ dos2unix sample.txt
dos2unix: converting file sample.txt to UNIX format ...
Đối với tất cả các file trong một thư mục bạn chỉ có thể sử dụng
dos2unix *
Tôi không biết tại sao câu trả lời này lại bị bỏ phiếu. Nó đã làm, sau khi tất cả, chỉ ra tên gói để sử dụng khi cài đặt từ 'yum', mà không ai trong số các câu trả lời khác lưu ý. –
Chỉ cần một cách thay thế (so với cái parasietje mô tả) sử dụng dox2unix. Giả sử bạn tất cả dos tập tin nằm trong một thư mục
Runtime.getRuntime().exec("dos2unix /path/to/dos/files/*");
String unixText = windowsText.replaceAll("\r\n", "\n"); // DOS2UNI
Dòng trên sẽ loại bỏ tất cả \ r nhưng đối với một số lý do nó cũng loại bỏ các \ n vì vậy tôi đã phải thêm nó trở lại khi in unixText vào một tập tin : unixText + "\ n"
Có thể trùng lặp [Làm cách nào để chuyển đổi dòng lệnh DOS/Windows (CRLF) thành dòng mới Unix (\ n) trong tập lệnh Bash?] (Https://stackoverflow.com/questions/2613800/làm thế nào để chuyển đổi-dos-windows-newline-crlf-to-unix-newline-n-in-a-bash-script) – jww