Come faccio a convertire tutti i file in una cartella in un finale di riga diverso? (Su Windows)


15

Come faccio a convertire tutti i file in una cartella in un finale di linea diverso (linux o mac)? Sto usando Windows.

In questo momento il mio approccio è usare Winscp per copiare su un box Linux e quindi eseguire dos2unix in modo ricorsivo sulla cartella.


Sembra che il tuo approccio attuale sia abbastanza buono
Ramhound,

Risposte:


17

Cygwin e Dos2unix installati in Cygwin

find . -type f -exec dos2unix {} \;

1
potresti desiderare in -maxdepth 1modo che non passi attraverso le sottodirectory
barlop

1
Grazie per il consiglio. Ma il mio caso d'uso richiede tutti i file inclusi quelli nelle sottocartelle ..
Satish,

Installare Cygwin solo per eseguire un programma mi sembra enorme. Suggerirei solo di utilizzare la versione DOS dello stesso programma e quindi un comando di una riga nella shell per eseguirlo su tutti i file.
Richard,

1
@Richard: Vero, ma molti di noi hanno già Cygwin ed i suoi strumenti installati. Puoi provarlo anche tu. Renderà il tuo Windows più Linux-y e, quindi, più tollerabile. Inoltre, non è necessario cercare soluzioni specifiche di Windows per i problemi della riga di comando.
John Red,

5

È possibile installare git bash anziché cygwin32 (o simile) su Windows. Viene fornito con diversi comandi unix-like (ad esempio, find, dos2unix, ecc,) nella bashmodalità di emulazione. Una volta installato, la conversione di file da Windows a finali di file Unix dovrebbe essere semplice.

Supponiamo che tu abbia i tuoi file (che terminano con il suffisso .java ) in un albero di cartelle chiamato src e che desideri convertire i loro finali da Windows a Unix.

  1. Individua src in Esplora risorse.
  2. Fare clic con il tasto destro e aprire Git Bash su quella cartella dal menu contestuale di Windows.
  3. Run: find . -name "*.java" -exec dos2unix {} \;.

E questo è tutto!


0

La tua risposta per usare dos2unix e unix2dos è eccellente.

Ecco un altro modo basato sulla tua risposta.

Puoi usare Gnuwin32 anche se stranamente il pacchetto Gnuwin32 che ha i comandi è Cygutils http://gnuwin32.sourceforge.net/packages/cygutils.htm , quindi otterrai unix2dos.exe e dos2unix.exe in C: \ Programmi .... \ GnuWin32 \ bin e con quello nel tuo PERCORSO.

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 per verificare se il tuo per% f farebbe quello che vuoi, quindi usa echo o @ECHO ad es.
Per% f in (*) fai @ECHO unix2dos% f

E puoi usare xxd per creare i file e testarli convertiti. xxd per Windows viene fornito con VIM C: \ Program "" Files \ 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>

nota- anche nel caso in cui usi una distro * nix, guardando apt-get (apt-cache search dos2unix) il pacchetto è effettivamente (forse non sorprende!) dos2unix (così installato con apt-get install dos2unix) e che include insieme a dos2unix eseguibile, l'eseguibile unix2dos. Se si esegue la ricerca nella cache di apt unix2dos, mostra il pacchetto dos2unix.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.