unix2dos
을 C++ 소스 코드 파일 그룹에 사용하려고합니다. 기본적으로 unix2dos
은 LF를 CRLF로 변환합니다.for 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'은 나를위한 가장 자연스러운 형태입니다. –