Conversione ricorsiva di file da terminazioni di riga dos a terminazioni di linea unix


11

Sto cercando un comando che potrei usare per eseguire su un'intera directory e sottodirectory che convertirà tutte le terminazioni di linea da DOS a UNIX.

Dovrebbe essere in grado di rilevare se un file è di testo o binario.

Ho installato dos2unixusando macports ma sembra che non abbia l'opzione ricorsiva.


Definire come un file è di testo o binario?
user151019

Testo: nessuna ASCII inferiore a 32, ad eccezione di TAB, CR, LF.
Max Ried,

Risposte:


22

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


Nel caso in cui dos2unixnon sia disponibile sul tuo sistema, puoi utilizzare il seguente script (salva come dos2unixe imposta come eseguibile):

#!/bin/sh

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

Non eseguire questo comando nella radice di un repository Git, altrimenti rovinerai il tuo repository!
Nick,

Inoltre, ho avuto più fortuna usando perl -pi -e 's/\r\n|\n|\r/\n/;' $*( fonte )
Nick il

1

Ecco un codice shell di una riga find . -name "*" -type f -exec perl -pi -e 's/\r\n/\n/;' {} \;


Le risposte di una riga sono scoraggiate. Prova ad aggiungere ulteriori dettagli o commenta.
Max Ried,

Funziona come pubblicizzato! Cos'altro aggiungere? ;-)
Taiko,

2
Hm ... beh, ha rovinato alcuni file PNG. Maneggiare con cura
Taiko,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.