Выборочная коррекция LFs до CRLFs

Выборочная коррекция LFs до CRLFs

Данный:

  • большое дерево каталогов, содержащее смесь:
    • файлы с окончанием строки LF
    • файлы с окончаниями строк CRLF
    • файлы со странной смесью окончаний строк LF и CRLF (из-за ошибки)
    • двоичные файлы
    • другие файлы, которые я не хочу трогать, даже если они сломаны
  • пути, которые могут содержать пробелы

Моей целью было оставить файлы только LF и только CRLF в покое и преобразовать гибридные файлы в файлы только CRLF, оставив при этом последние две группы в покое.

Это заклинание работает:

find . (some conditions to exclude stuff I don't want to mess with) |
    xargs -d '\n' unix2dos -ic | cut -c 3- |
    xargs -d '\n' dos2unix -ic | cut -c 3- |
    xargs -d '\n' unix2dos

Но теперь мне интересно, есть ли лучший / более эффективный способ сделать это. (Используя только стандартные инструменты оболочки, а не Perl/Python и т. д.)

FWIW, первый unix2dos -ic— это фильтрация начального списка только для тех файлов, которые содержат CRLF, затем dos2unix -icподфильтрация для тех, которые также содержат LF, и последний фактически выполняет преобразование. Вызовы cut— это обрезка двух начальных пробелов, которые сбивают с толку xargs, а также -dрешение проблем с пробелами в именах файлов, поскольку вывод не заключен в кавычки.

Связанный контент