Konvertiere alle EOL (Dos-Unix) aller Dateien in einem Verzeichnis und Unterverzeichnissen rekursiv ohne dos2unix

8

Wie konvertiere ich alle EOL (DOS- & gt; unix) aller Dateien in einem Verzeichnis und Unterverzeichnissen rekursiv ohne dos2unix ? (Ich habe es nicht und kann es nicht installieren.)

Gibt es eine Möglichkeit, es mit tr -d '\r' und Pipes zu machen? Wenn ja, wie?

    
user1316233 17.05.2012, 02:50
quelle

5 Antworten

11

Für alle Dateien im aktuellen Verzeichnis können Sie dies mit einem Perl-Einzeiler tun: perl -pi -e 's/\r\n/\n/g' * (gestohlen von hier )

BEARBEITEN : Und mit einer kleinen Änderung können Sie Unterverzeichnisrekursion machen:

%Vor%     
smocking 17.05.2012 04:13
quelle
7

Sie können seds -i -Flag verwenden, um die Dateien direkt zu ändern:

%Vor%

Wenn ich Sie wäre, würde ich die Dateien behalten, um sicherzustellen, dass die Operation in Ordnung ist. Dann können Sie die temporären Dateien löschen, wenn Sie fertig sind. Dies kann so gemacht werden:

%Vor%     
Tim Pote 17.05.2012 03:12
quelle
2

Haben Sie vernünftige Dateinamen und Verzeichnisnamen ohne Leerzeichen usw.?

Wenn ja, ist es nicht zu schwer. Wenn Sie mit willkürlichen Namen arbeiten müssen, die Zeilenumbrüche und Leerzeichen enthalten, dann müssen Sie härter arbeiten als das.

%Vor%

Die Trap-Funktion stellt sicher, dass keine temporären Dateien übrig bleiben. Dort können Sie weitere Tricks mit mehr zufälligen Namen für Ihre temporären Dateinamen ziehen. Normalerweise brauchen Sie sie nur, wenn Sie in einer feindlichen Umgebung arbeiten.

    
Jonathan Leffler 17.05.2012 03:15
quelle
1

Sie können den Editor auch im Batch-Modus verwenden.

%Vor%     
pizza 17.05.2012 09:04
quelle
0

Wenn \r nicht gefolgt wird von \n (vielleicht der Fall in Dateien von Tim Pote):

  • das Löschen von \r (mit tr -d ) kann Zeilenumbrüche löschen
  • das Ersetzen von \r durch \n darf keine doppelten / dreifachen Zeilenumbrüche verursachen

Vielleicht könnte Tim Pote die obigen Punkte für die von ihm erwähnten Dateien überprüfen.

    
Line App Maker 26.06.2012 22:22
quelle