Comment convertir tous les fichiers d'un dossier en une fin de ligne différente? (sous Windows)

15

Comment convertir tous les fichiers d'un dossier en une fin de ligne différente (linux ou mac)? J'utilise Windows.

À l'heure actuelle, mon approche consiste à utiliser Winscp pour copier dans une boîte Linux, puis exécuter récursivement dos2unix sur le dossier.

Satish
la source
On dirait que votre approche actuelle est plutôt bonne
Ramhound

Réponses:

17

Installé Cygwin et Dos2unix dans Cygwin

find . -type f -exec dos2unix {} \;
Satish
la source
1
vous voudrez peut-être -maxdepth 1qu'il ne passe pas par les sous
barlop
1
Merci pour le conseil. Mais mon cas d'utilisation nécessite tous les fichiers, y compris ceux des sous-dossiers ..
Satish
L'installation de Cygwin juste pour exécuter un programme me semble exagérée. Je suggérerais simplement d'utiliser la version DOS du même programme, puis une commande d'une ligne dans le shell pour l'exécuter sur tous les fichiers.
Richard
1
@Richard: C'est vrai, mais beaucoup d'entre nous ont déjà Cygwin et ses outils sont installés. Vous pouvez aussi l'essayer. Cela rendra votre Windows plus Linux et donc plus tolérable. En outre, vous n'avez pas à rechercher de solutions spécifiques à Windows pour vos problèmes de ligne de commande.
John Red
5

Vous pouvez installer git bash au lieu de cygwin32 (ou similaire) sous Windows. Il est livré avec plusieurs commandes unix-like (par exemple find, dos2unix, etc.,) dans le bashmode d'émulation. Une fois installé, la conversion des fichiers de Windows en terminaisons de fichiers Unix devrait être facile.

Supposons que vos fichiers (se terminant par le suffixe .java ) se trouvent dans une arborescence de dossiers appelée src et que vous souhaitez convertir leurs terminaisons de Windows en Unix.

  1. Recherchez src dans l'Explorateur Windows.
  2. Faites un clic droit et ouvrez Git Bash sur ce dossier à partir du menu contextuel de Windows.
  3. Run: find . -name "*.java" -exec dos2unix {} \;.

Et c'est tout!

Sarath Chandra
la source
0

Votre réponse pour utiliser dos2unix et unix2dos est excellente.

Voici une autre manière basée sur votre réponse.

Vous pouvez utiliser Gnuwin32 mais de manière assez amusante, le package Gnuwin32 qui contient les commandes est Cygutils http://gnuwin32.sourceforge.net/packages/cygutils.htm , vous obtiendrez alors unix2dos.exe et dos2unix.exe dans C: \ Program Files .... \ GnuWin32 \ bin et avec cela dans votre CHEMIN.

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>

Et pour tester si votre pour% f ferait ce que vous voulez, puis utilisez echo ou @ECHO par exemple
pour% f dans (*) faites @ECHO unix2dos% f

Et vous pouvez utiliser xxd pour créer les fichiers et tester leur conversion. xxd pour Windows est fourni avec 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>

note- également dans le cas où vous utilisez une distribution * nix, en regardant apt-get (recherche d'apt-cache dos2unix), le package est en effet (peut-être sans surprise!) dos2unix (donc installé avec apt-get install dos2unix) et qui inclut avec le dos2unix exécutable, l'exécutable unix2dos. Si vous effectuez une recherche apt-cache unix2dos, le paquet dos2unix s'affiche.

barlop
la source