Cambie el EOL en varios archivos de una vez

100

¿Hay alguna forma en Notepad ++ (o incluso con otra herramienta) para cambiar la línea que termina automáticamente en varios archivos de una sola vez ?

es decir, convierta una combinación de archivos Windows EOL ( CRLF) y UNIX EOL ( LF) para que sean todos Windows EOL ( CRLF)

fduff
fuente
1
En caso de que notepad ++ no sea un requisito firme, la información aquí puede ser relevante: stackoverflow.com/questions/3110031/…
reuben

Respuestas:

102

El diálogo Reemplazar puede manejar caracteres extendidos como EOL. Simplemente cambie "Modo de búsqueda" a "Extendido" y podrá trabajar con EOL (\ r \ n en Windows o \ n en Unix), pestañas (\ t), etc.

También puede utilizar la pestaña Buscar en archivos del cuadro de diálogo para realizar el reemplazo en varios archivos.

Captura de pantalla

McGarnagle
fuente
14
Tenga en cuenta que esta solución no funcionará si todos sus archivos no son ya UNIX-estilo. Dado que reemplazar \ncon \r\ntambién se convertirá \r\nen \r\r\n.
Kirk Woll
-1 sin cambiar Editar> Conversión EOL (vea Dos \ Windows en la barra de estado de su captura de pantalla), presionar ENTER insertará el EOL incorrecto - y tener EOL mixto es incluso peor que mantener cualquiera de los estándares
Aprillion
42
reemplace \ n con \ r \ n. luego reemplace \ r \ r \ n con \ r \ n. voila!
dev_row
2
¿Por qué la captura de pantalla de ejemplo muestra \ten Find what? Las pestañas no tienen nada que ver con cambiar los finales de línea, ¿verdad?
trejder
1
genial ... funciona perfectamente en el editor de notepad ++ ... ahorra un gran esfuerzo, que vamos a gastar en cambios manuales
aniruddha
91

Tengo el Bloc de notas ++ 6.1.2.
En el menú "Editar" tiene "Conversión EOL" que hace exactamente lo que necesita.

Marco
fuente
24
que funciona sobre una base de archivo, no se puede aplicar a un conjunto completo de archivos.
fduff
10
¿Ha leído el título de la pregunta? ¿Vio la parte "cambiar EOL en varios archivos "?
Sk8erPeter
2
Abriría más de un archivo para hacerlo en más de un archivo, secuencialmente. Como dijo, "de una vez" no estaba originalmente allí.
aparente
7
De hecho, la respuesta me resultó muy útil, ya que necesitaba cambiar EOL en archivos individuales y no sabía cómo.
DiegoDD
5
Respuesta útil ya que esto aparece primero en Google
Matthew Lock
69

Utilice la función 'Buscar en archivos' (Ctrl + Shift + F). Cambie el modo de búsqueda en la parte inferior izquierda a 'Expresión regular'.

En el cuadro 'Buscar qué', use este patrón:

(?<!\r)\n

Reemplazar con:

\r\n

Elija su directorio y especifique los filtros de tipo de archivo. Marque 'En todas las subcarpetas' si lo desea. Haga clic en 'Reemplazar en archivos'.

Lo que hace es reemplazar cualquier carácter de nueva línea (\ n) que no esté actualmente precedido por un retorno de carro (\ r) con \ r \ n. Por lo tanto, no coincidirá con los finales de línea que ya son del estilo de Windows.

ingrese la descripción de la imagen aquí

Sean
fuente
1
¿Podrías explicar qué (?<!\r)\nsignifica, especialmente la primera ?<!parte, gracias!
user1032613
2
el (?<! )es una búsqueda hacia atrás negativo. Significa coincidir si el prefijo está ausente. En este caso, está comprobando \ry solo coincidirá si \nno tiene un \rantes.
rtpHarry
Sí. Estoy de acuerdo con rtpHarry. Esta es esta parte de mi respuesta: "cualquier carácter de nueva línea (\ n) que no esté actualmente precedido por un retorno de carro (\ r)".
Sean
1
¡La solución más sofisticada!
Philipp Michalski
4
Técnicamente hablando, esta es la respuesta más precisa y completa de esta página.
dotNET
8

Use reemplazar todo con expresión regular

(\r?\n)|(\r\n?)

a

\r\n

Esto coincidirá con todos los patrones finales de línea posibles (único \ r, \ n o \ r \ n) de regreso a \ r \ n (Windows).

Para operar en varios archivos, ya sea:

  • Utilice "Reemplazar todo en todos los documentos abiertos" en la pestaña "Reemplazar". Primero tendrá que arrastrar y soltar todos los archivos en Notepad ++. Es bueno que tenga control sobre en qué archivo operar, pero puede ser lento si hay varios cientos o miles de archivos.
  • "Reemplazar en archivos" en la pestaña "Buscar en archivos", por filtro de archivo de su elección, por ejemplo, * .cpp * .cs en un directorio especificado.
Wappenull
fuente
La mejor respuesta, ya que funciona con todos los tipos de finales de línea. ¡Gracias!
yoyo
¡Esta es la mejor y más fácil respuesta!
user1447420
5

La única solución de FUNCIONAMIENTO que encontré para varios archivos / carpetas, después de buscar en Google durante 1 hora es esta:

  • instalar el modo de prueba de PyCham ,
  • abra y seleccione su Carpeta / Carpetas del proyecto y siga la captura de pantalla

ingrese la descripción de la imagen aquí

Cristian Muscalu
fuente
También funciona en IntelliJ IDEA Community Edition, que es gratis y no requiere prueba. IntelliJ IDEA .
CodeMonkey
1

Encontré esta solución a través de esta discusión :

También puede establecer el EOL predeterminado en notepad ++ a través de "Configuración" -> "Preferencias" -> "Nuevo documento / Directorio predeterminado" y luego seleccione "Unix / OSX" en el cuadro Formato.

Nota: Siempre se puede usar una opción fuera de banda usando la línea de comando:

unix2dos *.cmd
dos2unix *.sh
R2AD
fuente