Vous pouvez utiliser tr
pour convertir de DOS en Unix; toutefois, vous ne pouvez le faire en toute sécurité que si CR n'apparaît dans votre fichier que comme premier octet d'une paire d'octets CRLF. C'est généralement le cas. Vous utilisez ensuite:
tr -d '\015' <DOS-file >UNIX-file
Notez que le nom DOS-file
est différent du nom UNIX-file
; si vous essayez d'utiliser le même nom deux fois, vous vous retrouverez sans données dans le fichier.
Vous ne pouvez pas faire l'inverse (avec le «tr» standard).
Si vous savez comment entrer le retour chariot dans un script ( control-V, control-Mpour entrer control-M), alors:
sed 's/^M$//' # DOS to Unix
sed 's/$/^M/' # Unix to DOS
où le «^ M» est le caractère de contrôle-M. Vous pouvez également utiliser le mécanisme de bash
cotation ANSI-C pour spécifier le retour chariot:
sed $'s/\r$//' # DOS to Unix
sed $'s/$/\r/' # Unix to DOS
Cependant, si vous devez le faire très souvent (plus d'une fois, en gros), il est beaucoup plus judicieux d'installer les programmes de conversion (par exemple dos2unix
et unix2dos
, ou peut dtou
- être et utod
) et de les utiliser.
Si vous devez traiter des répertoires et sous-répertoires entiers, vous pouvez utiliser zip
:
zip -r -ll zipfile.zip somedir/
unzip zipfile.zip
Cela va créer une archive zip avec des fins de ligne changées de CRLF en CR. unzip
mettra ensuite les fichiers convertis en place (et vous demandera fichier par fichier - vous pouvez répondre: Oui à tous). Remerciements à @vmsnomad pour l'avoir signalé.
dos2unix
aide de votre gestionnaire de paquets, c'est vraiment beaucoup plus simple et existe sur la plupart des plates-formes.