Рекурсивное преобразование файлов из концов строки DOS в конец строки Unix


11

Я ищу команду, которую можно использовать для запуска всего каталога и подкаталога, которая преобразует все окончания строк из DOS в UNIX.

Он должен быть в состоянии определить, является ли файл текстовым или двоичным.

Я установил dos2unixиспользуя macports, но похоже, что он пропускает рекурсивную опцию.


Определите, как файл является текстовым или двоичным?
user151019

Текст: нет ASCII ниже 32, кроме TAB, CR, LF.
Макс Райд

Ответы:


22

Попробуй find . -name "*" -type f -exec dos2unix {} \;.


Если dos2unixваша система недоступна, вы можете использовать следующий скрипт (сохранить как dos2unixи установить как исполняемый файл):

#!/bin/sh

perl -pi -e 's/\r\n/\n/;' $*

Не запускайте эту команду в корне репозитория Git, иначе вы испортите свой репозиторий!
Ник

Кроме того, мне повезло с использованием perl -pi -e 's/\r\n|\n|\r/\n/;' $*( источник )
Ник

1

Вот одна строка кода оболочки find . -name "*" -type f -exec perl -pi -e 's/\r\n/\n/;' {} \;


Одной строкой ответы не приветствуются. Попробуйте добавить больше деталей, или прокомментируйте это.
Макс Райд

Работает как рекламируется! Что еще добавить? ;-)
Тайко

2
Хм ... ну, он все-таки испортил некоторые файлы png. Обращаться с осторожностью
Тайко
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.