Convertendo arquivos recursivamente de finais de linha dos para finais de linha unix


11

Estou procurando um comando que eu poderia usar para executar em um diretório e subdiretório inteiro que converterá todas as terminações de linha do DOS para UNIX.

Ele deve ser capaz de detectar se um arquivo é texto ou binário.

Eu instalei dos2unixusando macports, mas parece que ele perde a opção recursiva.


Definir como um arquivo é texto ou binário?
precisa saber é o seguinte

Texto: Nenhum ASCII abaixo de 32, exceto TAB, CR, LF.
Max Ried

Respostas:


22

Tente find . -name "*" -type f -exec dos2unix {} \;.


Caso dos2unixnão esteja disponível no seu sistema, você pode usar o seguinte script (salvar como dos2unixe definir como executável):

#!/bin/sh

perl -pi -e 's/\r\n/\n/;' $*

Não execute este comando na raiz de um repositório Git, caso contrário, você estragará o seu repositório!
Nick

Além disso, eu tinha melhor sorte usando perl -pi -e 's/\r\n|\n|\r/\n/;' $*( fonte )
Nick

1

Aqui está um código shell de linha find . -name "*" -type f -exec perl -pi -e 's/\r\n/\n/;' {} \;


As respostas de uma linha são desencorajadas. Tente adicionar mais detalhes ou comente.
Max Ried

Funciona como anunciado! O que mais a acrescentar? ;-)
Taiko

2
Hm ... bem, ele estragou alguns arquivos png. Manuseie com cuidado
Taiko
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.