Como faço para converter todos os arquivos em uma pasta em uma final de linha diferente? (no Windows)

15

Como faço para converter todos os arquivos em uma pasta para uma linha final diferente (linux ou mac)? Estou usando o Windows.

Agora, minha abordagem é usar o Winscp para copiar para uma caixa Linux e executar o dos2unix recursivamente na pasta.

Satish
fonte
Parece que sua estratégia atual é muito bom
Ramhound

Respostas:

17

Cygwin e Dos2unix instalados no Cygwin

find . -type f -exec dos2unix {} \;
Satish
fonte
1
você pode querer -maxdepth 1que ele não passar por subdiretórios
barlop
1
Obrigado pela dica. Mas o meu caso de uso requer todos os arquivos, incluindo aqueles em sub-pastas ..
Satish
Instalar o Cygwin apenas para executar um programa me parece um exagero. Eu sugeriria apenas usar a versão DOS do mesmo programa e, em seguida, um comando de uma linha no shell para executá-lo em todos os arquivos.
Richard
1
@ Richard: Verdade, mas muitos de nós já têm o Cygwin e suas ferramentas instaladas. Você pode tentar também. Isso tornará seu Windows mais Linux-y e, portanto, mais tolerável. Além disso, você não precisa procurar soluções específicas do Windows para seus problemas de linha de comando.
John
5

Você pode instalar o git bash em vez do cygwin32 (ou similar) no Windows. É fornecido com vários comandos UNIX-like (por exemplo, find, dos2unix, etc.,) no bashmodo de emulação. Uma vez instalado, a conversão de arquivos do Windows para o final do arquivo Unix deve ser fácil.

Digamos que você tenha seus arquivos (terminando com o sufixo .java ) em uma árvore de pastas chamada src e deseje converter os finais deles do Windows para os do Unix.

  1. Localize src no Windows Explorer.
  2. Clique com o botão direito e abra o Git Bash nessa pasta no menu de contexto do Windows.
  3. Execute: find . -name "*.java" -exec dos2unix {} \;.

E é isso!

Sarath Chandra
fonte
0

Sua resposta para usar o dos2unix e o unix2dos é excelente.

Aqui está outra maneira com base em sua resposta.

Você pode usar o Gnuwin32, embora o pacote Gnuwin32 que possui os comandos seja Cygutils http://gnuwin32.sourceforge.net/packages/cygutils.htm, para obter o unix2dos.exe e o dos2unix.exe em C: \ Arquivos de Programas .... \ GnuWin32 \ bin e com isso no seu PATH.

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>

E para testar se o seu para% f faria o que você deseja, use echo ou @ECHO, por exemplo,
para% f em (*) do @ECHO unix2dos% f

E você pode usar o xxd para criar os arquivos e testar se eles são convertidos. O xxd para Windows vem com o VIM C: \ "" Arquivos de Programas \ 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>

note: também no caso de usar uma distro * nix, olhando para o apt-get (pesquisa do apt-cache dos2unix) o pacote é realmente (talvez sem surpresa!) dos2unix (instalado com o apt-get install dos2unix) e isso inclui o dos2unix executável, o executável unix2dos. Se você pesquisar no apt-cache unix2dos, ele mostrará o pacote dos2unix.

barlop
fonte