하모니 게시판
쉘스크립트에 관해서 질문이 있습니다
2016.02.18 00:06
리눅스를 한동안 건드리지 않다가 다시 건드리니 예전에 되던 걸 기억 못하는 것인지 아니면 안되던 것인데 되는 것으로 착각한 것인지 분간을 못하게 되었습니다. 제가 한글이 깨지는 자막파일 인코딩을 바꾸는 쉘스크립트를 짜 보았습니다
#!/bin/bash
# 첫번째 인자는 자막파일
subtitle=$1
iconv -c -f euc-kr -t utf-8 $1 > $HOME/템플릿/subtitleCon
cat $HOME/템플릿/subtitleCon > $1
한개씩 대입 하면 잘 되는데 여러 파일을 인자로 할 경우는 실행이 되지 않더군요. 예를 들어서 '*.smi'로 인자를 주었을 경우는 실행이 되지 않았습니다. 예전에 쉘스크립트를 짜놓고 cp나 find처럼 등록해 놓고 썻던 것 같은데 그걸 검색해도 나오지 않는 것 같습니다.
지금 일일이 경로/스크립트파일 자막파일 이런 식으로 바꾸고 있는데 조금 더 요령껏 바꾸는 방법 없을까요?
댓글 6
-
와우! 반복문으로 적용하는 방법도 괜찮은 방법인듯...
취향에 맞게 사용해 보시길...
-
알려주셔서 감사합니다. 쉘스크립트도 파고 들면 상당히 방대하던데 그냥 대충 읽어본 정도로 그쳐서 다시 보려니 다 잊어먹은 상태더군요. 처음부터 시작하는 느낌 입니다 ㄷㄷ
-
일괄처리 Shell
http://stackoverflow.com/questions/4544669/batch-convert-latin-1-files-to-utf-8-using-iconv
파일 일괄 변경하기
http://kwakyc87.tistory.com/102
리눅스 일괄 텍스트 파일 character set 인코딩 변환
http://codeheart.tistory.com/77
euc-kr-인코딩-파일을-utf-8으로-변환하는-방법에-대한-글들-정리
https://benant.wordpress.com/2012/04/03/euc-kr-%EC%9D%B8%EC%BD%94%EB%94%A9-%ED%8C%8C%EC%9D%BC%EC%9D%84-utf-8%EC%9C%BC%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B8%80%EB%93%A4-%EC%A0%95/
<결론>
보통 윈도우에서 디폴트로 저장한 경우(euc-kr)이 된다.
이런 경우 리눅스 에디터에서 읽으면 인식하지 못하여 깨진다.
다음은 *.smi 파일을 euc-kr 로 가정하여 utf-8 로 변환된 파일을 converted 폴더에 생성해주는 것이다.
주의할 점은 euc-kr 이 아닌 경우도, 이러한 가정을 통해 변환을 하므로 반드시 열어서 확인해야 한다. (gedit *)
mkdir converted
find . -iname "*.smi" -type f -exec iconv -f euc-kr -t utf-8 "{}" -o ./converted/"{}" \;
>> 설명하자면 모든 *.smi 일반 파일에 대해서 iconv 를 통해 euc-kr 을 utf-8 로 변환된 파일을 일괄 생성.
확장가 smi로 끝나는 모든 파일을 찾아서 iconv를 사용하여 강제적으로 원하는 디렉토리에 코드 변환하여 저장하는 쉡스크립트이옵니다. 위와 같은 쉡스크립트로 모든 문제 해결 볼 수 있습니다.
변경된 내용을 저장할 디렉토리를 converted가 아닌 다른 이름으로 해도 상관없습니다.
쉽죠! 이상 끝.
-
자세하게 알려주셔서 감사합니다. 일일이 수작업으로 끝낸 후지만 나중을 대비해서 최적의 스크립트를 짜 보려고 합니다. 그런데 작업하던 도중 같은 시즌의 드라마에서 euc-kr로 제작된 자막과 utf-8 제작된 자막이 섞여있더군요. 두번 변환하면 복구가 불가능 한 것 같아서 복구 불가능한 것들은 다시 찾아서 다운 받은 후 변환해서 저장해 두었습니다
서버관련 지식은 먼 나라의 이야기 같았는데 데스크탑으로 응용하려고 하니 머리에 쏙쏙 들어오는 군요.
-
서버 쪽보단 데스크탑 용도로 사용하시니 당연히 머리에 쏙쏙 들어올 수 밖에요. ㅋㅋ
김태용의 리눅스 쉘 스크립트 프로그래밍 입문
http://book.naver.com/bookdb/book_detail.nhn?bid=6080977
책을 참고하시면 많은 도움 받으실 수 있으리라 봅니다.
영문으로 된 좋은 자료들이 넘치지만, 아마도 기겁할 것으로 보여서 나중에 필요하시면 문의하시고요, 일단은 이 책 정도 수준을 참고하시면 아마도 데스크탑 용도로 사용하시는데는 부족함이 없음줄 아뢰오~~~
{스크립트} $i
done
이렇게 해보시면 어떨까요?