¿Cómo convierto todos los archivos de una carpeta a un final de línea diferente? (en Windows)

15

¿Cómo convierto todos los archivos de una carpeta a un final de línea diferente (Linux o Mac)? Estoy usando Windows

En este momento, mi enfoque es usar Winscp para copiar en un cuadro de Linux y luego ejecutar dos2unix de forma recursiva en la carpeta.

Satish
fuente
Parece que su enfoque actual es bastante bueno
Ramhound

Respuestas:

17

Instalado Cygwin y Dos2unix en Cygwin

find . -type f -exec dos2unix {} \;
Satish
fuente
1
puede querer -maxdepth 1para que no pase por subdirectorios
barlop
1
Gracias por el consejo. Pero mi caso de uso requiere todos los archivos, incluidos los de las subcarpetas ...
Satish
Instalar Cygwin solo para ejecutar un programa me parece excesivo. Sugeriría simplemente usar la versión DOS del mismo programa y luego un comando de una línea en el shell para ejecutarlo contra todos los archivos.
Richard
1
@ Richard: Cierto, pero muchos de nosotros ya tenemos Cygwin y sus herramientas instaladas. Puedes probarlo también. Hará que su Windows sea más Linux-y, por lo tanto, más tolerable. Además, no tiene que buscar soluciones específicas de Windows para sus problemas de línea de comandos.
John Red
5

Puede instalar git bash en lugar de cygwin32 (o similar) en Windows. Viene con varios comandos de Unix (por ejemplo, find, dos2unix, etc.,) en el bashmodo de emulación. Una vez instalado, la conversión de archivos de Windows a terminaciones de archivos Unix debería ser fácil.

Supongamos que tiene sus archivos (que terminan con el sufijo .java ) en un árbol de carpetas llamado src y desea convertir sus terminaciones de Windows a Unix.

  1. Busque src en el Explorador de Windows.
  2. Haga clic derecho y abra Git Bash en esa carpeta desde el menú contextual de Windows.
  3. Ejecute: find . -name "*.java" -exec dos2unix {} \;.

¡Y eso es!

Sarath Chandra
fuente
0

Su respuesta para usar dos2unix y unix2dos es excelente.

Aquí hay otra forma basada en su respuesta.

Puede usar Gnuwin32, aunque curiosamente, el paquete Gnuwin32 que tiene los comandos es Cygutils http://gnuwin32.sourceforge.net/packages/cygutils.htm, de modo que obtendrá unix2dos.exe y dos2unix.exe en C: \ Archivos de programa .... \ GnuWin32 \ bin y con eso en tu RUTA.

C:\somedir>dir<ENTER>
 Volume in drive C has no label.
 Volume Serial Number is DC46-3C68

 Directory of C:\somedir

05/23/2014  01:10 AM    <DIR>          .
05/23/2014  01:10 AM    <DIR>          ..
05/23/2014  01:10 AM                 4 file1
               1 File(s)              4 bytes
               3 Dir(s)  196,129,951,744 bytes free

Do this command to go from dos2unix
C:\somedir>for %f in (*) do dos2unix %f <ENTER>

C:\somedir>dos2unix file1 <-- This runs automatically from you doing the above command
file1: done.

And do this command to go from unix2dos
C:\somedir>for %f in (*) do unix2dos %f <ENTER>

C:\somedir>unix2dos file1 <-- This runs automatically from you doing the above command
file1: done.

C:\somedir>

Y para probar si su% f haría lo que desea, use echo o @ECHO, por ejemplo,
para% f in (*) do @ECHO unix2dos% f

Y puede usar xxd para crear los archivos y probar que se convierten. xxd para Windows viene con VIM C: \ Program "" Files \ vim \ vim74 \ xxd.exe

so, i'll create a file, I like this style of command is it allows me to 
create whateer file I want, a dos one or a unix one or anything.  
61 is hex for 'a'       
C:\somedir>echo 610d0a| xxd -r -p >testfile <ENTER>

check the file raw, in its hex
C:\somedir>cat testfile | xxd -p <ENTER>
610d0a

check the file in ascii or unicode
C:\somedir>cat testfile <ENTER>
a

and the following commands just prove that dos2unix and unix2dos work/are working fine.  
C:\somedir>dos2unix testfile <ENTER>
testfile: done.

C:\somedir>cat testfile | xxd -p <ENTER>
610a

C:\somedir>unix2dos testfile <ENTER>
testfile: done.

C:\somedir>cat testfile | xxd -p <ENTER>
610d0a

C:\somedir>

nota: también en caso de usar una distro * nix, mirando apt-get (apt-cache search dos2unix) el paquete es de hecho (¡tal vez no sea sorprendente!) dos2unix (tan instalado con apt-get install dos2unix) y eso incluye junto con el dos2unix ejecutable, el ejecutable de unix2dos. Si haces apt-cache search unix2dos, muestra el paquete dos2unix.

barlop
fuente