[완료]모든 폴더의 flac를 mp3로 바꾸고 싶다면.

thdnice의 이미지

flac와 lame 를 이용하여
다음과 같은 코드를 짜서 폴더의 flac를 mp3로 변환하고 있는데..
만약 하위 디렉토리의 모든 flac를 mp3로 바꾸고 싶다면 어떻게 해야할까요?

아직 리눅스 명령어에 대한 공부기 미천하여.. 아이디어가 떠오르지 않네요 ㅠ

find -name "*.flac" 의 output을 이용하면 어떻게 될꺼 같기도 한데.. 이를 어떻게 적용해야할지 모르겠어요

#!/bin/sh
for S in *.flac; do
flac -d -F --totally-silent -c "${S}" | lame -V2 --vbr-new --resample 44.1 - "${S%.flac}.mp3";
done
rm *.flac

익명 사용자의 이미지

for S in $(find -name "*.flac"); do ...

익명 사용자의 이미지

thdnice의 이미지


그런데 파일명에 띄어쓰기가 있으니 이런 에러가 납니다.

예를들어

find -name "*.flac" 를 했을 경우

./Cd1/01 - The music.flac

./Cd1/01
The
music.flac

이렇게 나뉘어져서 $S에 입력되는거 같은데.

혹시 이런건 어떻게 해결해야할까요?

익명 사용자의 이미지

find -name "*.flac" -exec flac-mp3 {} \;

[flac-mp3]
flac -d -F --totally-silent -c "$1" | lame -V2 --vbr-new --resample 44.1 - "${1%.*}.mp3"

man find

thdnice의 이미지


덕분에 잘 해결하였습니다.
find에 execute command가 있는지 몰랐네요, 잘 사용하면 여러군데에 응용할 수 있을 것 같네요