[Shell Script] 확장자 일괄 변경하기

 

확장자 한번에 변경하기 



확장자가 제각각인 파일들을 하나의 확장자로 변경하고 싶을 때 사용하는 스크립트 입니다. 

#!/bin/sh

for filename in *                        #-------------1
do                                  
    case "$filename" in                   #-------------2
        *.htm | *.html)                   #-------------3

        #파일 명 앞 부분 취득
        headname=${filename%.*}          #-------------4

        #파일확장명 전환                  

        mv "$filename" "${headname}.txt" #--------------5
    ;;
    esac
done


현재파일







제 각각으로 만들어진 파일들이있는 폴더에 작성한 스크립트를 저장했습니다.



이 스크립트는 현재 디렉터리에 있는 확장자가 .htm과 .html인 모든 파일을 .txt 파일 확장자로 바꿉니다 .


#1 에서 *으로 현재 디렉터리 파일 목록을 대상으로 셸 변수 filename을 써서 순서대로 처리합니다 . 

for문에 in에 *를 지정하면 파일명이 확장되어서 현재 디렉터리 파일 목록을 간단히 작성합니다.

#2 에서 파일명으로 패턴을 매칭합니다.
case문을 사용하면 파일명에서 지정 문자열을 포함한것을 골라서 간단히 처리할 수 있습니다 다.


#3 에서 패턴을 작성합니다 
*.htm | *.html)  


#4 에서 파라미터 확장을 사용하였습니다.





지정한 셸 변수에서 %.*fh "(.) + 문자열"을 삭제  
확장자를 제외한 부분을 얻어 셸 변수를 headname 에 대입. 


특이사항

이 스크립트는 확장자만 다른 파일이 있으면 파일을 덮어쓰게 됩니다 .