Rekursives Konvertieren von Dateien von Dos-Zeilenenden in Unix-Zeilenenden

11

Ich suche nach einem Befehl, mit dem ich ein gesamtes Verzeichnis und Unterverzeichnis ausführen kann, das alle Zeilenenden von DOS nach UNIX konvertiert.

Es sollte erkennen können, ob eine Datei Text oder Binärdatei ist.

Ich habe dos2unixmit Macports installiert , aber es sieht so aus, als würde die rekursive Option übersehen.

Sorin
quelle
Definieren Sie, wie eine Datei Text oder Binär ist?
user151019
Text: Kein ASCII unter 32, außer TAB, CR, LF.
Max Ried

Antworten:

22

Versuchen Sie es find . -name "*" -type f -exec dos2unix {} \;.


Falls dos2unixauf Ihrem System nicht verfügbar ist, können Sie das folgende Skript verwenden (speichern unter dos2unixund als ausführbare Datei festlegen):

#!/bin/sh

perl -pi -e 's/\r\n/\n/;' $*
Chitsaou
quelle
Führen Sie diesen Befehl nicht im Stammverzeichnis eines Git-Repositorys aus, da Sie sonst Ihr Repository ruinieren!
Nick
Außerdem hatte ich besseres Glück mit perl -pi -e 's/\r\n|\n|\r/\n/;' $*( Quelle )
Nick
1

Hier ist ein einzeiliger Shell-Code find . -name "*" -type f -exec perl -pi -e 's/\r\n/\n/;' {} \;

l0pan
quelle
Einzeilige Antworten werden nicht empfohlen. Versuchen Sie, weitere Details hinzuzufügen oder zu kommentieren.
Max Ried
Funktioniert wie angegeben! Was noch hinzuzufügen? ;-)
Taiko
2
Hm ... nun, es hat einige PNG-Dateien vermasselt. Vorsichtig behandeln
Taiko