Rekurencyjnie konwertuje pliki z zakończeń linii dos do zakończeń linii unix

11

Szukam polecenia, którego mógłbym użyć do uruchomienia całego katalogu i podkatalogu, który przekonwertuje wszystkie zakończenia linii z DOS na UNIX.

Powinien być w stanie wykryć, czy plik jest tekstowy czy binarny.

Zainstalowałem dos2unixza pomocą Macports, ale wygląda na to, że brakuje opcji rekurencyjnej.

sorin
źródło
Zdefiniuj, w jaki sposób plik jest tekstowy lub binarny?
user151019
Tekst: Brak ASCII poniżej 32, z wyjątkiem TAB, CR, LF.
Max Ried

Odpowiedzi:

22

Spróbować find . -name "*" -type f -exec dos2unix {} \;.


Jeśli dos2unixnie jest dostępny w twoim systemie, możesz użyć następującego skryptu (zapisz jako dos2unixi ustaw jako plik wykonywalny):

#!/bin/sh

perl -pi -e 's/\r\n/\n/;' $*
chitsaou
źródło
Nie uruchamiaj tego polecenia w katalogu głównym repozytorium Git, w przeciwnym razie zrujnujesz swoje repozytorium!
Nick
Miałem też więcej szczęścia, używając perl -pi -e 's/\r\n|\n|\r/\n/;' $*( źródło )
Nick
1

Oto kod powłoki w jednej linii find . -name "*" -type f -exec perl -pi -e 's/\r\n/\n/;' {} \;

L0pan
źródło
Odpowiedzi na jedną linię są odradzane. Spróbuj dodać więcej szczegółów lub skomentuj to.
Max Ried
Działa jak w reklamie! Co jeszcze dodać? ;-)
Taiko,
2
Hm ... cóż, to spieprzyło kilka plików PNG. Postępuj ostrożnie
Taiko,