Altere o EOL em vários arquivos de uma vez

100

Existe alguma maneira no Notepad ++ (ou mesmo com outra ferramenta) de alterar a linha que termina automaticamente em vários arquivos de uma vez ?

ou seja, converter uma mistura de arquivos EOL do Windows ( CRLF) e UNIX EOL ( LF) para todos os arquivos EOL do Windows ( CRLF)

fduff
fonte
1
Caso o notepad ++ não seja um requisito firme, as informações aqui podem ser relevantes: stackoverflow.com/questions/3110031/…
reuben

Respostas:

102

A caixa de diálogo Substituir pode lidar com caracteres estendidos como EOL. Basta alterar o "Modo de Pesquisa" para "Estendido" e você poderá trabalhar com EOL (\ r \ n no Windows ou \ n no Unix), guias (\ t), etc.

Você também pode usar a guia Localizar em arquivos da caixa de diálogo para fazer a substituição em vários arquivos.

Captura de tela

McGarnagle
fonte
14
Note-se que esta solução não funcionará se todos os seus arquivos não estão unix-style. Já que substituir \npor \r\ntambém converterá \r\npara \r\r\n.
Kirk Woll de
-1 sem alterar Editar> conversão EOL (veja Dos \ Windows na barra de status de sua captura de tela), pressionar ENTER irá inserir o EOL errado - e ter mixado o EOL é ainda pior do que manter qualquer um dos padrões
abril
42
substitua \ n por \ r \ n. em seguida, substitua \ r \ r \ n por \ r \ n. voila!
dev_row
2
Por sua imagem exemplo mostra \tem Find what? As guias não têm nada a ver com a alteração do final da linha, certo?
trejder
1
ótimo ... funciona perfeitamente no editor notepad ++ ... economiza um grande esforço, que vamos gastar com alterações manuais
aniruddha
91

Tenho o Notepad ++ 6.1.2.
No menu "Editar" você tem "conversão EOL" que faz exatamente o que você precisa.

Marco
fonte
24
que funciona em uma base de arquivo, não pode ser aplicado a um conjunto completo de arquivos.
fduff
10
Você leu o título da pergunta? Você viu a parte "alterar o EOL em vários arquivos "?
Sk8erPeter
2
Você abriria mais de um arquivo para fazer isso em mais de um arquivo, sequencialmente. Como ele disse, "de uma vez" não estava originalmente lá.
gparent
7
Na verdade a resposta foi muito útil para mim, pois eu precisava alterar o EOL em arquivos únicos, e não sabia como.
DiegoDD
5
Resposta útil, pois isso surge primeiro no Google
Matthew Lock
69

Use o recurso 'Localizar em arquivos' (Ctrl + Shift + F). Altere o modo de pesquisa no canto inferior esquerdo para 'Expressão regular'.

Na caixa 'Encontrar o quê', use este padrão:

(?<!\r)\n

Substituir com:

\r\n

Escolha seu diretório e especifique quaisquer filtros de tipo de arquivo. Marque 'Em todas as subpastas' se desejar. Clique em 'Substituir nos arquivos'.

O que isso faz é substituir quaisquer caracteres de nova linha (\ n) que não sejam precedidos por um retorno de carro (\ r) por \ r \ n. Portanto, não corresponderá a terminações de linha que já são do estilo do Windows.

insira a descrição da imagem aqui

Sean
fonte
1
Você poderia explicar o que (?<!\r)\nsignifica, principalmente a primeira ?<!parte, obrigado!
user1032613
2
a (?<! )é um lookbehind negativo. Significa corresponder se o prefixo estiver ausente. Nesse caso, ele está verificando \re somente corresponderá se \nnão houver um \rantes dele.
rtpHarry
Sim. Eu concordo com rtpHarry. Esta é a parte da minha resposta: "quaisquer caracteres de nova linha (\ n) que não sejam precedidos por um retorno de carro (\ r)".
Sean
1
solução mais sofisticada!
Philipp Michalski
4
Tecnicamente falando, esta é a resposta mais precisa e completa desta página.
dotNET
8

Use substituir tudo por expressão regular

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

para

\r\n

Isso corresponderá a todos os padrões de finalização de linha possíveis (único \ r, \ n ou \ r \ n) de volta para \ r \ n (Windows).

Para operar em vários arquivos:

  • Use "Substituir tudo em todos os documentos abertos" na guia "Substituir". Você terá que arrastar e soltar todos os arquivos no Notepad ++ primeiro. É bom que você tenha controle sobre em qual arquivo operar, mas pode ser lento se houver centenas ou milhares de arquivos.
  • "Substituir nos arquivos" na guia "Encontrar nos arquivos", pelo filtro de arquivo de sua escolha, por exemplo, * .cpp * .cs em um diretório especificado.
Wappenull
fonte
Melhor resposta, pois funciona com todos os tipos de terminações de linha. Obrigado!
yoyo
Esta é a melhor e mais fácil resposta!
user1447420
5

A única solução DE TRABALHO que encontrei para vários arquivos / pastas, depois de pesquisar no Google por 1 hora é esta:

  • instale o modo de teste PyCham ,
  • abra e selecione sua pasta / pastas de projeto e siga a captura de tela

insira a descrição da imagem aqui

Cristian Muscalu
fonte
Também funciona no IntelliJ IDEA Community Edition, que é gratuito e não requer avaliação. IntelliJ IDEA .
CodeMonkey
1

Encontrou esta solução por meio desta discussão :

Você também pode definir o EOL padrão no notepad ++ através de "Configurações" -> "Preferências" -> "Novo Documento / Diretório Padrão" e selecione "Unix / OSX" na caixa Formato.

Observação: sempre é possível usar uma opção fora de banda usando a linha de comando:

unix2dos *.cmd
dos2unix *.sh
R2AD
fonte