Jak przekonwertować wszystkie pliki w folderze na inne zakończenie linii? (w systemie Windows)

15

Jak przekonwertować wszystkie pliki w folderze na inne zakończenie linii (Linux lub Mac)? Korzystam z systemu Windows.

Obecnie moim podejściem jest użycie Winscp do skopiowania do Linux-a, a następnie rekursywne uruchomienie dos2unix na folderze.

Satish
źródło
Wygląda na to, że twoje obecne podejście jest całkiem niezłe
Ramhound

Odpowiedzi:

17

Zainstalowano Cygwin i Dos2unix w Cygwin

find . -type f -exec dos2unix {} \;
Satish
źródło
1
możesz chcieć, -maxdepth 1żeby nie przechodził przez podkatalogi
barlop
1
Dzięki za wskazówkę. Ale mój przypadek użycia wymaga wszystkich plików, łącznie z plikami w podfolderach.
Satish
Zainstalowanie Cygwina tylko w celu uruchomienia jednego programu wydaje mi się ogromną przesadą. Sugerowałbym użycie wersji DOS tego samego programu, a następnie polecenia powłoki w jednym wierszu, aby uruchomić go na wszystkich plikach.
Richard
1
@Richard: To prawda, ale wielu z nas już ma Cygwin i zainstalowane narzędzia. Możesz też tego spróbować. To sprawi, że twój Windows będzie bardziej Linux-y, a tym samym bardziej tolerowany. Ponadto nie musisz szukać rozwiązań problemów związanych z wierszem poleceń specyficznych dla systemu Windows.
John Red,
5

Możesz zainstalować git bash zamiast cygwin32 (lub podobnego) w systemie Windows. Pochodzi z kilku poleceń, takich jak UNIX (na przykład find, dos2unixitd) w bashtrybie emulacji. Po zainstalowaniu konwersja plików z Windows na końce plików Unix powinna być łatwa.

Załóżmy, że masz swoje pliki (z rozszerzeniem .java ) w drzewie folderów o nazwie src i chcesz przekonwertować ich zakończenia z systemu Windows na uniksowe.

  1. Znajdź src w Eksploratorze Windows.
  2. Kliknij prawym przyciskiem myszy i otwórz Git Bash w tym folderze z menu kontekstowego Windows.
  3. Run: find . -name "*.java" -exec dos2unix {} \;.

I to wszystko!

Sarath Chandra
źródło
0

Twoja odpowiedź na użycie dos2unix i unix2dos jest doskonała.

Oto inny sposób oparty na twojej odpowiedzi.

Możesz używać Gnuwin32, chociaż zabawnie jest pakiet Gnuwin32, który zawiera polecenia Cygutils http://gnuwin32.sourceforge.net/packages/cygutils.htm, więc dostaniesz unix2dos.exe i dos2unix.exe w C: \ Program Files .... \ GnuWin32 \ bin i tym razem w ŚCIEŻCE.

C:\somedir>dir<ENTER>
 Volume in drive C has no label.
 Volume Serial Number is DC46-3C68

 Directory of C:\somedir

05/23/2014  01:10 AM    <DIR>          .
05/23/2014  01:10 AM    <DIR>          ..
05/23/2014  01:10 AM                 4 file1
               1 File(s)              4 bytes
               3 Dir(s)  196,129,951,744 bytes free

Do this command to go from dos2unix
C:\somedir>for %f in (*) do dos2unix %f <ENTER>

C:\somedir>dos2unix file1 <-- This runs automatically from you doing the above command
file1: done.

And do this command to go from unix2dos
C:\somedir>for %f in (*) do unix2dos %f <ENTER>

C:\somedir>unix2dos file1 <-- This runs automatically from you doing the above command
file1: done.

C:\somedir>

Aby sprawdzić, czy twój% f zrobiłby to, co chcesz, użyj echa lub @ECHO np.
Dla% f in (*) wykonaj @ECHO unix2dos% f

I możesz użyć xxd do tworzenia plików i testowania ich konwersji. xxd dla Windows zawiera VIM C: \ Program "Files \ vim \ vim74 \ xxd.exe

so, i'll create a file, I like this style of command is it allows me to 
create whateer file I want, a dos one or a unix one or anything.  
61 is hex for 'a'       
C:\somedir>echo 610d0a| xxd -r -p >testfile <ENTER>

check the file raw, in its hex
C:\somedir>cat testfile | xxd -p <ENTER>
610d0a

check the file in ascii or unicode
C:\somedir>cat testfile <ENTER>
a

and the following commands just prove that dos2unix and unix2dos work/are working fine.  
C:\somedir>dos2unix testfile <ENTER>
testfile: done.

C:\somedir>cat testfile | xxd -p <ENTER>
610a

C:\somedir>unix2dos testfile <ENTER>
testfile: done.

C:\somedir>cat testfile | xxd -p <ENTER>
610d0a

C:\somedir>

uwaga - również w przypadku korzystania z dystrybucji * nix, patrząc na apt-get (apt-cache search dos2unix) pakiet rzeczywiście jest (być może nie jest zaskoczeniem!) dos2unix (tak zainstalowany z apt-get install dos2unix) i to obejmuje wraz z dos2unix plik wykonywalny, plik wykonywalny unix2dos. Jeśli wykonasz wyszukiwanie apt-cache unix2dos, wyświetli się pakiet dos2unix.

barlop
źródło