2009년 10월 05일
정규표현식을 이용한 간단히 파일이름 바꾸기.
어째뜬 나는 그러건 견딜수 없어서 파일명이 부득이하게 길어지고 띄워쓰기가 필요할때 모두가 그렇듯이 "_" 언더스페이스를 사이에 넣어준다. 그렇게 파일들을 관리해오다가..얼마전 사수에게서 (내가 일하는곳은 전산쪽이 아니다) 대량의 파일을 받았는데 잘 알아보라고 친절히 띄워쓰기를 해둔 몇백개의 파일을 보고 어헉.거렸던적이 있다. 하나하나 바꾸면서 작업의 연장으로 만들어버리면 그것도 괜찮겠지만 그러기엔 너무...바빠서..최근 공부중인 정규표현식을 이용하여 바꿔주기로 했다.
파일은 다양한 형태로 이름지어져있었는데 몇몇개 예를 들어보자면...
English Time step2.png
English Time step3.png
English Time step4.png
English Time Step5.png
English Time stp6.png
이 파일들을 한번에 뿅하고 바꿔주기로 하자.사실 실력이 안되니깐. 한 두어번의 작업으로 원하는 결과를 얻어보자.
$rename 's/ /_/g' *
이 명령어는 공백을 언더스페이스로 바꿔주는 명령어이다. 만약 저기 끝에 g를 안붙여주게 되면 처음 공백만 언더스페이스가 들어가고 뒤에 나머지 두부분은 그냥 넘어갈것이다. 그래서 다 바꿔야 하니 g를 넣어주고 모든 파일(디렉토리에 따로 들어있다고 가정)을 지정해주는 와일드 문자를 넣어주고 엔터해주면 공백은 사라지게 된다. 그 다음 빠진 스펠과 step의 S를 대문자로 바꿔주자.
$rename 's/[Ss]te?p/Step_/g' *
간단한정규식으로 틀린 스펠과 대문자 소문자까지 모두 잡아서 이름을 바꿔주었다. [Ss]는 소문자 대문자 S 둘다 지칭하는것이고 e다음의 물으표"?"는 앞서있는 e 글자가 있어도 되고 없어도 되는 경우를 말해주고 있다. 그래서 파일은 다음과 같이 변환 된다.
.
.
# by | 2009/10/05 05:44 | 정규표현식 | 트랙백 | 덧글(2)






