13

Как преобразовать все файлы в папке в другое окончание строки (linux или mac)? Я использую Windows.

Прямо сейчас мой подход состоит в том, чтобы использовать Winscp для копирования в коробку linux, а затем рекурсивно запускать dos2unix для этой папки.

3 ответа3

12

Установил Cygwin и Dos2unix в Cygwin

find . -type f -exec dos2unix {} \;
3

Вы можете установить git bash вместо cygwin32 (или аналогичного) в Windows. Он поставляется с несколькими unix-подобными командами (например, find , dos2unix и т.д.) В режиме эмуляции bash . После установки преобразование файлов из Windows в окончание файлов Unix должно быть простым.

Допустим, у вас есть файлы (заканчивающиеся суффиксом .java) в дереве папок с именем src, и вы хотите преобразовать их окончания из Windows в Unix.

  1. Найдите src в проводнике Windows.
  2. Щелкните правой кнопкой мыши и откройте Git Bash в этой папке из контекстного меню Windows.
  3. Беги: find . -name "*.java" -exec dos2unix {} \; ,

И это все!

0

Ваш ответ на использование dos2unix и unix2dos отличный.

Вот еще один способ, основанный на вашем ответе.

Вы можете использовать Gnuwin32, хотя, как ни странно, пакет Gnuwin32, содержащий команды, называется Cygutils http://gnuwin32.sourceforge.net/packages/cygutils.htm, так что вы получите unix2dos.exe и dos2unix.exe в C:\Program Files ....\GnuWin32\bin и с этим в вашей PATH.

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>

И чтобы проверить, будет ли ваш for% f делать то, что вы хотите, используйте echo или @ECHO, например:
для% f в (*) сделать @ECHO unix2dos% f

И вы можете использовать xxd для создания файлов и проверки их конвертации. xxd для Windows поставляется с VIM C:\ Programme "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>

примечание - также в случае использования * nix дистрибутива, глядя на apt-get (apt-cache search dos2unix), пакет действительно (возможно, неудивительно!) dos2unix (устанавливается вместе с apt-get install dos2unix) и включает вместе с исполняемым файлом dos2unix исполняемый файл unix2dos. Если вы выполняете поиск в apt-cache unix2dos, он показывает пакет dos2unix.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .