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.


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

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


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.