Преобразование всех EOL (dos-> unix) всех файлов в каталог и подкаталоги рекурсивно без dos2unix

Как преобразовать все EOL (dos-> unix) всех файлов в каталог и подкаталоги рекурсивно без dos2unix ? (У меня его нет и не могу его установить).

Есть ли способ сделать это с помощью tr -d '\r' и труб? Если да, то как?

    Для всех файлов в текущем каталоге вы можете сделать это с помощью однострочного perl -pi -e 's/\r\n/\n/g' * : perl -pi -e 's/\r\n/\n/g' * (украденный здесь )

    EDIT : И с небольшой модификацией вы можете выполнить рекурсию подкаталога:

     find | xargs perl -pi -e 's/\r\n/\n/g' 

    Вы можете использовать флаг sed -i для изменения файлов на месте:

     find . -type f -exec sed -i 's/\x0d//g' {} \+ 

    Если бы я был вами, я бы сохранил файлы, чтобы убедиться, что операция прошла нормально. Затем вы можете удалить временные файлы, когда будете сделаны. Это можно сделать так:

     find . -type f -exec sed -i'.OLD' 's/\x0d//g' {} \+ find . -type f -name '*.OLD' -delete 

    У вас есть правильные имена файлов и имена каталогов без пробелов и т. Д.?

    Если это так, это не слишком сложно. Если вам нужно иметь дело с произвольными именами, содержащими новые строки и пробелы, и т. Д., Вам придется работать больше, чем это.

     tmp=${TMPDIR:-/tmp}/crlf.$$ trap "rm -f $tmp.?; exit 1" 0 1 2 3 13 15 find . -type f -print | while read name do tr -d '\015' < $name > $tmp.1 mv $tmp.1 $name done rm -f $tmp.? trap 0 exit 0 

    Материал ловушки гарантирует, что вы не получите временные файлы. Там есть и другие трюки, которые вы можете вытащить, с более случайными именами для ваших временных имен файлов. Обычно вам это не нужно, если вы не работаете во враждебной среде.

    Вы также можете использовать редактор в пакетном режиме.

     find . -type f -exec bash -c 'echo -ne "%s/\\\r//\nx\n" | ex "{}" ' \; 

    Если \r не следует \n (возможно, в файлах Tim Pote):

    • удаление \r (с использованием tr -d ) может удалить строки новой строки
    • заменяя \r на \n не может вызывать двойные / тройные строки новой строки

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