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.


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/;' $*

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/;' {} \;


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.