Conversion récursive des fichiers des fins de ligne DOS en fins de ligne Unix

11

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

Il devrait pouvoir détecter si un fichier est du texte ou binaire.

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

Sorin
la source
Définissez comment un fichier est texte ou binaire?
user151019
Texte: Pas d'ASCII en dessous de 32, sauf pour TAB, CR, LF.
Max Ried

Réponses:

22

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


Dans le cas où il dos2unixn'est pas disponible sur votre système, vous pouvez utiliser le script suivant (enregistrer sous dos2unixet définir comme exécutable):

#!/bin/sh

perl -pi -e 's/\r\n/\n/;' $*
chitsaou
la source
N'exécutez pas cette commande à la racine d'un référentiel Git, sinon vous ruinerez votre référentiel!
Nick
De plus, j'ai eu plus de chance en utilisant perl -pi -e 's/\r\n|\n|\r/\n/;' $*( source )
Nick
1

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

l0pan
la source
Les réponses d'une ligne sont déconseillées. Essayez d'ajouter plus de détails ou de commenter.
Max Ried
Fonctionne comme annoncé! Quoi d'autre à ajouter? ;-)
Taiko
2
Hm ... eh bien, ça a bousillé certains fichiers png. Manipuler avec soin
Taiko