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.


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

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.