지난 팁에서는 vi 에디터 내에서 ^M을 지우는 방법을 알아 보았습니다.

 

이번에는 디렉토리 안에 ^M이 들어 있는 파일이 많을 경우 모든 파일에서 또는 특정한 파일에서 ^M을 지우는 방법을 알아 보겠습니다.

 

명령어 find 를 사용합니다.

find는 리눅스에서 find [시작경로] [option] 의 형태로 사용합니다.

 

따라서 현재 디렉토리에서 검사를 하려면

 

find .

 

라고 하면 됩니다.

 

다음 옵션에서는 파일의 이름을 이용합니다.

 

find . -name '*.c'

 

라고 하면 현재 디렉토리의 확장자가 c 인 모든 파일을 찾습니다.

여기에서 하위 디렉토리를 검색하지 않으려면

 

find . -maxdepth 1 -name '*.c'

 

이렇게 하면 하위 디렉토리를 더이상 검색하지 않습니다.

물론 1을 2 또는 3으로 하면 하위 2단계 또는 3단계까지 검색 합니다.

 

find . -maxdepth 1 -name '*.c' -o -name '*.h'

 

이렇게 하면 확장자가 c 또는 h 인 파일을 모두 검색 합니다.

 

이렇게 ^M 을 제거할 파일을 찾은 다음 명령을 실행 합니다.

 

find 명령어에는 추가 명령어를 실행 할 수 있습니다.

추가 명령으로는 perl 을 사용할 것입니다.

perl은 /usr/bin 안에 있는 리눅스의 외부명령어 입니다.

 

perl의 용법에 대한 설명은 생략 하겠습니다.

find에서 perl 을 추가로 실행 하려면

-exec 옵션을 주면 됩니다.

 

find . -maxdepth 1 -name '*.c' -o -name '*.h'  -exec perl -pi -e 's/^M//g' {} \;

 

이와 같이 하면 현재의 디렉토리 내에 확장자가 c 또는 h 인 파일의 ^M 이 모두 지워집니다.

^M 은 ctrl+v+m 으로 타이핑 하여야 합니다.