Konversi file secara rekursif dari akhir baris dos ke akhir baris unix

11

Saya mencari perintah yang bisa saya gunakan untuk berjalan di seluruh direktori dan subdirektori yang akan mengubah semua akhir baris dari DOS ke UNIX.

Seharusnya dapat mendeteksi apakah file adalah teks atau biner.

Saya menginstal dos2unixmenggunakan macports tetapi tampaknya tidak melewatkan opsi rekursif.

Sorin
sumber
Tentukan bagaimana suatu file adalah teks atau biner?
user151019
Teks: Tidak ada ASCII di bawah 32, kecuali untuk TAB, CR, LF.
Max Ried

Jawaban:

22

Coba find . -name "*" -type f -exec dos2unix {} \;.


Jika dos2unixtidak tersedia di sistem Anda, Anda dapat menggunakan skrip berikut (save as dos2unixdan atur sebagai executable):

#!/bin/sh

perl -pi -e 's/\r\n/\n/;' $*
chitsaou
sumber
Jangan jalankan perintah ini di root dari repositori Git atau Anda akan merusak repositori Anda!
Nick
Juga, saya lebih beruntung menggunakan perl -pi -e 's/\r\n|\n|\r/\n/;' $*( sumber )
Nick
1

Berikut ini adalah satu kode shell baris find . -name "*" -type f -exec perl -pi -e 's/\r\n/\n/;' {} \;

10pan
sumber
Satu baris jawaban tidak disarankan. Coba tambahkan lebih detail, atau komentari.
Max Ried
Bekerja seperti yang diiklankan! Apa lagi yang ingin ditambahkan? ;-)
Taiko
2
Hm ... yah itu memang mengacaukan beberapa file png. Tangani dengan hati
Taiko