Tuesday, February 16, 2010

UNIX의 expr를 이용한 substring operation

질문 : 포토샵에서 레이어를 자동으로 뽑아낸 파일들이
2-_0002_3.jpg, 2-_0001_4.jpg 같은 형태를 띄고 있는데, 이러한 파일명을
2-3.jpg, 2-4.jpg ... 와 같이 만드는 방법은?

답 :
_ 사이에 있는 것을 없애주면 되는데, 이런 것은
다음과 같이 유닉스 shell script 를 짜면 된다.

# Usage :
# mypho [dirname]
#
# converts filenames from
# 2-_0002_3.jpg, 2-_0001_4.jpg ...
# to
# 2-3.jpg, 2-4.jpg ...

find "$1" -name "*-_*_*.jpg" | while read filename
do
head=${filename%%_*}
tail=${filename##*_}
result=${head}${tail}
mv "$filename" "$result"
done

이것을 mypho 라는 파일에 저장해준 후
mypho [폴더명]
하면 자동으로 변환된다.

스크립트 파일을 어디서건 실행되도록 하려면 스크립트가 들어 있는
path를 지정해줘야 하는데 그렇게 하는 방법은 다음에 설명해두었다.
텍스트파일 한글인코딩 자동 수정

설명 (Substring Removal 방법):
${string#substring}
Strips shortest match of $substring from front of $string.

${string##substring}
Strips longest match of $substring from front of $string.

예)
str1=abc_ThisIsMe_ABCabc
str2=${str1#*_}
str3=${str2%_*}
echo $str3
# 결과 : ThisIsMe

레퍼런스 :
Advanced Bash-Scripting Guide: Manipulating Strings

No comments:

Post a Comment