Какой лучший способ конвертировать файлы Windows / DOS в Unix в пакетном режиме? - PullRequest
4 голосов
/ 30 марта 2010

В основном нам нужно изменить символы конца строки для группы файлов.

Есть ли способ сделать это с помощью командного файла? Есть ли бесплатная утилита?

Ответы [ 4 ]

8 голосов
/ 30 марта 2010
2 голосов
/ 11 января 2014

Это можно сделать с помощью несколько более короткой команды.

    find ./ -type f | xargs -I {} dos2unix {}
0 голосов
/ 22 мая 2013

Объедините find с dos2unix / fromdos для преобразования каталога файлов (исключая двоичные файлы).

Просто добавьте это в ваш .bashrc:

DOS2UNIX=$(which fromdos || which dos2unix) \
  || echo "*** Please install fromdos or dos2unix"
function finddos2unix {
# Usage: finddos2unix Directory
find $1 -type f -exec file {} \; | grep " text" | cut -d ':' -f1 | xargs $DOS2UNIX
}

Сначала DOS2UNIX узнает, действительно ли выустановить утилиту и выбрать один для использования

Find создает список всех файлов, затем файл добавляет «: ASCII текст» после каждого текстового файла.

Наконец, grep выбирает текстфайлы, Cut удаляет весь текст после ':', а xargs делает эту большую командную строку для DOS2UNIX.

0 голосов
/ 30 марта 2010

Вы должны быть в состоянии использовать tr в сочетании с xargs, чтобы сделать это.

По крайней мере, на стороне Unix, это должен быть самый простой способ. Тем не менее, я пытался сделать это один раз на коробке с Windows более десяти лет назад, но обнаружил, что версия Windows tr переводит мои терминаторы обратно в формат Windows для меня. :-( Однако я думаю, что за прошедшее десятилетие инструменты стали умнее.

...