간간히 화일 다루기가 귀찮으면 책 찾아가면서 쉘 스크립트를 만들어봅니다.
(보통 일괄적으로 화일이름 달고 싶을 때 만들어 보는데....^_^)
오늘도 MP3 화일을 다루기 귀찮아서 하나 맹글어 봤습니다.
화일이 쌓일 수록 어디에 무슨 곡이 있는 지 찾기가 힘들어서 텍스트로라도
인덱스를 만들어 놓고 싶었는데, 이게 노가다가 장난이 아니더군요.
근데, 스크립트로 'tail' 하고 'head' 로 장난을 하니...후후...
언제나 느끼는 거지만, 쉘 스크립트...너무 좋습니다.
파이프를 사용해서 조그마한 프로그램들을 모듈처럼 사용할 수도 있고...
하여간, 미숙하기는 하지만 아래는 제가 만들어본 스크립트입니다.
더 공부해서 고쳐야겠지만서도요.....
===========================================================
===========================================================
# 현재 디렉토리 이름을 알아냅니다.
C_PATH=`pwd`
C_PATH=${C_PATH##*/}
List_File=`echo $C_PATH.txt`
# List File 을 만듭니다.
# FAT에서 공백이 있는 긴 이름 화일일 수도 있기때문에,
# "$List_File" 만들었습니다.
echo -ne "**** $C_PATH ****" > "$List_File"
echo -ne "\n\n" >> "$List_File"
# 현재 디렉토리의 MP3 목록으로 ID를 받아냅니다.
for MP3_FILE in $(ls *.[Mm][Pp][23])
do
MP3_TITLE=`tail --bytes=125 $MP3_FILE|head --bytes=30`
MP3_TITLE=`echo $MP3_TITLE`
# 공백을 지우기 위해서 echo를 사용했습니다.
MP3_ARTIST=`tail --bytes=125 $MP3_FILE|head --bytes=60|tail --bytes=30`
MP3_ARTIST=`echo $MP3_ARTIST`
# Time은 Comment Field에 기재해서 사용하고 있습니다...저는요..^_^
MP3_TIME=`tail --bytes=31 $MP3_FILE|head --bytes=30`
MP3_TIME=`echo $MP3_TIME`
echo -ne "${MP3_FILE%*.[Mm][Pp][23]} : $MP3_TITLE - $MP3_ARTIST ($MP3_TIME)\n" >> "$List_File"
done
===========================================================
===========================================================
후후...진짜 간단하지 않습니까??
뭐, 기능도 없고, 잘 하시는 분은 더 간단히 만드시겠지만, 모르는 저도 이
정도면 만들 수 있다는 사실이...흑흑.....
GUI가 판을 치는 세상에서도 쉘이여 영원하라......
꼬리......
MP3 스펙을 구할 수가 없어서 열심히 tail로 Field 구성을 알아 봤습니다.
끝에서 125Bytes에 기재가 되더군요.(TAG라는 단어 뒤에 붙습니다)
Title(30) + Artist(30) + Album(30) + Year(4) + Comment(30) + '/'(1)
노가다노가다....-_-;;;