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.


¿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/;' $*

¡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/;' {} \;


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.