Conversión recursiva de archivos de terminaciones de línea DOS a terminaciones de línea Unix

11

Estoy buscando un comando que pueda usar para ejecutar en todo un directorio y subdirectorio que convertirá todas las terminaciones de línea de DOS a UNIX.

Debe poder detectar si un archivo es de texto o binario.

Lo instalé dos2unixusando macports pero parece que echa de menos la opción recursiva.

sorin
fuente
¿Definir cómo un archivo es texto o binario?
user151019
Texto: sin ASCII por debajo de 32, excepto TAB, CR, LF.
Max Ried

Respuestas:

22

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


En caso de dos2unixque no esté disponible en su sistema, puede usar el siguiente script (guardar como dos2unixy establecer como ejecutable):

#!/bin/sh

perl -pi -e 's/\r\n/\n/;' $*
Chitsaou
fuente
¡No ejecutes este comando en la raíz de un repositorio de Git o arruinarás tu repositorio!
Nick
Además, tuve mejor suerte usando perl -pi -e 's/\r\n|\n|\r/\n/;' $*( fuente )
Nick
1

Aquí hay un código de shell de línea find . -name "*" -type f -exec perl -pi -e 's/\r\n/\n/;' {} \;

l0pan
fuente
Se desaconsejan las respuestas de una línea. Intenta agregar más detalles o comenta al respecto.
Max Ried
Funciona como se anuncia! ¿Qué más agregar? ;-)
Taiko
2
Hm ... bueno, arruinó algunos archivos png. Manejar con cuidado
Taiko