Я пытаюсь использовать unix2dos
в группе файлов исходного кода на C++. В принципе, unix2dos
преобразует LF в CRLF.для loop/unix2dos для очистки группы файлов с определенным расширением
я мог бы просто сделать следующее, и она делает то, что я хочу:
#!/bin/sh
find . -type f \(-name "*.h" -o -name "*.cpp" \) -exec unix2dos {}\;
, но я не хочу, файл должен быть изменен, если он имеет CRLF конец линии уже. Вот почему я должен изменить сценарий.
#!/bin/sh
for i in `find . -type f \(-name "*.h" -o -name "*.cpp" \)`
do
LINE=`file $i | grep CRLF`
if [ $? -eq 1 ]
then
unix2dos $i
fi
done
for
петля кажется немного сложнее в использовании, поскольку пробелы не обрабатываются корректно. Когда имя файла содержит пробел, оболочка пытается неправильно применить unix2dos в разбитой строке.
Как решить проблему?
Очень приятно. Если не использовать perl, я думаю, что переопределить псевдоним для 'unix2dos' и применить себя только при необходимости. 'find -exec' - самая естественная форма для меня. –