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

15

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

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

Сатиш
источник
Похоже, ваш нынешний подход довольно хорош
Ramhound

Ответы:

17

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

find . -type f -exec dos2unix {} \;
Сатиш
источник
1
Вы можете хотеть, -maxdepth 1чтобы это не проходило через подкаталоги
barlop
1
Спасибо за чаевые. Но мой сценарий использования требует все файлы, в том числе в подпапках ..
Satish
Установка Cygwin только для запуска одной программы кажется мне чрезмерным излишним. Я бы предложил просто использовать версию DOS той же самой программы, а затем однострочную команду в оболочке, чтобы запустить ее для всех файлов.
Ричард
1
@Richard: Да, но у многих из нас уже есть Cygwin и его инструменты установлены. Вы можете попробовать это тоже. Это сделает вашу Windows более Linux-y и, следовательно, более терпимой. Кроме того, вам не нужно искать специфичные для Windows решения ваших проблем с командной строкой.
Джон Ред
5

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

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

  1. Найдите src в проводнике Windows.
  2. Щелкните правой кнопкой мыши и откройте Git Bash в этой папке из контекстного меню Windows.
  3. Run: 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 в (*) do @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.

barlop
источник