Рекурсивно перетворює файли з закінчень рядків dos у закінчення рядків Unix


11

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

Він повинен мати можливість виявити, чи файл є текстовим чи двійковим.

Я встановив dos2unixза допомогою macports, але, схоже, він пропускає рекурсивну опцію.


Визначте, як файл є текстовим чи двійковим?
користувач151019

Текст: Ні 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.