11 votes

Conversion récursive de fichiers de terminaisons de lignes dos en terminaisons de lignes unix

Je cherche une commande que je pourrais utiliser pour exécuter sur un répertoire entier et un sous-répertoire qui convertira toutes les terminaisons de ligne de DOS à UNIX.

Il doit être capable de détecter si un fichier est textuel ou binaire.

J'ai installé dos2unix en utilisant macports mais il semble qu'il manque l'option récursive.

0 votes

Définir comment un fichier est texte ou binaire ?

0 votes

Texte : Pas d'ASCII en dessous de 32, sauf pour TAB, CR, LF.

22voto

yorkxin Points 336

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


En cas dos2unix n'est pas disponible sur votre système, vous pouvez utiliser le script suivant (sauvegardé en tant que dos2unix et défini comme exécutable) :

#!/bin/sh

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

0 votes

N'exécutez pas cette commande dans le Root d'un dépôt Git, sinon vous allez ruiner votre dépôt !

0 votes

De plus, j'ai eu plus de chance en utilisant perl -pi -e 's/\r\n|\n|\r/\n/;' $* ( source )

1voto

l0pan Points 31

Voici une ligne de code shell find . -name "*" -type f -exec perl -pi -e 's/\r\n/\n/;' {} \;

0 votes

Les réponses d'une ligne sont déconseillées. Essayez d'ajouter plus de détails, ou de commenter.

0 votes

Fonctionne comme annoncé ! Quoi d'autre à ajouter ? ;-)

2 votes

Hm... ça a quand même bousillé certains fichiers png. A manipuler avec précaution

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X