Converta os finais de linha do Unix para o Windows

35

Recentemente, mudei de volta para o Windows do Linux. Eu tenho alguns arquivos com CRLFs, alguns com LFs e alguns que são misturados. Existe um utilitário que me ajudará a encontrar todos os meus arquivos tocados pelo Unix e convertê-los em arquivos com terminação CRLF?

O utilitário deve ser executado no Windows, não no Linux. Eu já mudei. Prefiro não instalar o Cygwin se puder evitá-lo.

    
por Matthew Scouten 17.11.2009 / 05:46

13 respostas

30

Você pode convertê-los com o utilitário unix2dos em sua plataforma Linux. Existem versões unix2dos disponíveis para o Windows também.

Se você tem o Perl instalado, você também pode usar este forro:

perl -p -e 's/\n/\r\n/' < UNIX_LF.txt > WINDOWS_CRLF.txt
    
por 17.11.2009 / 05:52
17

Aqui está uma maneira fácil e rápida.

Arraste e solte o arquivo de texto no Chrome (não sei sobre outros navegadores) e recorte e cole de volta no arquivo original:)

    
por 11.08.2010 / 08:57
10

O que eu achei melhor para recursivamente passar por pastas, permitir filtros de arquivos e permitir uma simples pesquisa por "\ r \ n" e substituí-lo por apenas "\ n" era Notepad++ .

O Notepad ++ é um dos melhores e gratuitos programas de bloco de notas de código aberto para Windows. É muito simples e poderoso. Ele lidou com a linha terminando com a pesquisa / substituir bem. Um contratado verifica vários arquivos .c e .h em nosso repositório com terminações de linha do Linux, mas como a maioria das pessoas padronizou as ferramentas de compilação do Windows / Eclipse, os arquivos não serão compilados até que os finais de linha sejam convertidos. .

    
por 06.04.2011 / 23:40
8

Use a Caneta de arquivo suíça .

Por exemplo: sfk addcr -dir . -file .txt -norec
altera as terminações LF em CR / LF para Windows, em todos os arquivos .txt do diretório atual, mas NÃO dentro de subdiretórios (sem recursão).

Mas este programa faz muito mais do que isso.

    
por 17.11.2009 / 08:40
6

No Cygwin, você pode converter entre arquivos Unix e "DOS" do Windows usando dois utilitários integrados:

Converter para o formato DOS CR / LF:

u2d filename

Converter de volta para o formato Unix CR:

d2u filename

O arquivo é deixado no lugar com o mesmo nome.

Aproveite! Rick

    
por 15.07.2010 / 04:21
3

Vou lançar essa solução por aí. Git fará isso. Veja este post sobre isso

Então, teoricamente, você poderia fazer isso para converter uma árvore inteira

cd root/of/tree
git init .
git add .
git commit -m "initial commit"
echo "* text eol=crlf" > .gitattributes
git rm --cached -r .
git reset --hard

Altere crlf para lf se quiser ir para o outro lado. NOTA: você ainda não terminou, continue lendo

Digite git status para ver quais arquivos serão afetados. Você pode ter que adicionar linhas como

*.jpg binary
*.png binary
*.gif binary

etc para .gitattributes para evitar a conversão de determinados arquivos. Você também pode marcar alguns arquivos como texto

*.md text
*.css text

Em seguida, repita essas duas linhas depois de editar .gitattributes

git rm --cached -r .
git reset --hard

Em seguida, use git status novamente para ver quais arquivos serão alterados. Quando tiver certeza de que todos os arquivos afetados estão listados por git status , então confirme

git add .
git commit -m "normalize line endings"

agora verifique todos os arquivos novamente

git rm --cached -r .
git reset --hard

Eles agora devem ter o que você quiser com as terminações de linha

** NOTA: Se você já estava usando o git, pule os primeiros 3 comandos git. Se você não estava usando o git, agora pode excluir o arquivo .gitattributes e a pasta .git .

** Faça backup de seus arquivos: o git rm --cached -r exclui todos eles (embora eles estejam, teoricamente, no seu git repo (a pasta .git), que é como eles são restaurados pelo último comando git reset --hard . estão sendo deletados, provavelmente é melhor fazer backup deles.

    
por 14.12.2016 / 10:15
1

Minha distribuição Linux tem dois pequenos utilitários chamados fromdos e todos que eu uso para esta tarefa.

    
por 17.11.2009 / 10:32
1

Use um editor de texto que entenda os dois finais de linha como SciTE ou Notepad++ se você não precisa converter todas as linhas que terminam em todos os seus arquivos, mas não quer ver o arquivo inteiro agrupado na primeira linha.

    
por 25.03.2011 / 08:09
0

Existem muitas maneiras de traduzir os caracteres eoln em arquivos TEXT, e todos têm um favorito.

Mas sempre transfiro arquivos do Linux para o Windows no modo BINARY, depois abro arquivos TEXT no Windows com um editor capaz de abrir os dois tipos e salvá-los de qualquer forma, se necessário.

Eu usei o Programmers File Editor para isso, mas o Notepad ++ pode fazer isso também. O WordPad também é útil [pelo menos, para visualizar arquivos terminados em LF].

Estou pensando nos arquivos de texto simples que podem ter sido originados no Linux e precisam ser legíveis no mundo (de fato, padrão) do Windows. Não tenho certeza do que você quis dizer com 'arquivos tocados por unix'.

    
por 17.11.2009 / 06:04
0

Para oferecer mais opções (embora eu tenha gostado mais da resposta do hack do user45832 ):

Conversores on-line

Eu acho que um programa de FTP GUI irá fazê-lo automaticamente

Batch / DOS one-liner (remove linhas vazias) :

FOR /F "eol= delims= usebackq" %a IN (infile.txt) DO (ECHO %a>> outfile.txt)

PowerShell:

gc infile.txt | %{$_.split("'n")} | Out-File outfile.txt

Adquira os dois últimos aqui

    
por 21.01.2015 / 21:49
0

Obtenha o AWK para Windows .

Converter finais de linha Unix em finais de linha do Windows:

awk 'sub("$", "\r")' unixfile.txt > winfile.txt

Converta os finais de linha do Windows em finais de linha do Unix:

awk '{ sub("\r$", ""); print }' winfile.txt > unixfile.txt

Versões mais antigas de awk não incluem a função sub . Nesses casos, use o mesmo comando, mas substitua awk por gawk ou nawk .

Fonte

    
por 29.05.2018 / 15:21
0

Na Wikipédia , há uma solução em cmd:

TYPE unix_file | FIND /V "" > dos_file

No PowerShell, existem várias maneiras de fazer isso, revertendo o que foi feito em essa questão .

(Get-Content $file -Raw).Replace("'n", "'r'n") | Set-Content $path -Force

(Get-Content $infile) -join "'r'n" > $outfile

$text = [IO.File]::ReadAllText($original_file) -replace "'n", "'r'n"
[IO.File]::WriteAllText($original_file, $text)

Também é possível fazer isso em VBScript e JScript , que também são ferramentas que já estão disponíveis no Windows sem instalar um aplicativo de terceiros.

    
por 16.06.2018 / 15:38
-1

Eu costumava abrir o arquivo em 'editar' e salvar como o trabalho foi feito ...

    
por 11.08.2010 / 09:03