여러 오디오 파일을 파일당 12개의 다양한 피치로 조옮김하고 싶습니다.
다음은 파일의 피치를 성공적으로 변경합니다.
sox *.wav Examples_100.wav pitch 100
다음은 디렉토리의 모든 파일을 wav에서 mp3로 성공적으로 변환합니다.
for f in *.wav; do sox "$f" "converted/${f%%.wav}.mp3"; done
원하는 결과를 얻기 위해 이러한 명령을 결합해 보았습니다. 다음은 디렉토리의 모든 파일에 itch 100 명령을 적용하려는 시도입니다.
for f in *.wav; do sox "$f" "converted/${f%%.wav}.wav” pitch 100; done
그러니 먼저 이 문제를 해결해야 합니다.
하지만 궁극적으로 각 파일에 다음을 적용하고 싶습니다.
pitch 100
pitch 200
pitch 300
pitch 400
pitch 500
pitch 600
pitch -100
pitch -200
pitch -300
pitch -400
pitch -500
pitch -600
따라서 디렉터리의 각 파일은 출력 디렉터리에 12개의 파일을 반환합니다.
하지만 첫 번째 문제를 해결하는 데 도움을 주시면 두 번째 문제도 제가 직접 해결할 수 있을 것 같습니다.
이제 1부가 해결되었습니다.
이제 이유를 알아야 합니다.
for f in *.wav;
do sox "$f" "converted/${f%%.wav}.wav" pitch 100;
do sox "$f" "converted/${f%%.wav}.wav" pitch 200;
done
실행 오류:
-bash: syntax error near unexpected token `do'
답변1
사용하나(및 단 하나의) 루프 내에서 실행되는 각 명령에 대해 하나가 아닌 루프 당 하나의 do
명령문 입니다. for
예를 들어
for f in *.wav; do
sox "$f" "converted/${f%%.wav}.wav" pitch 100
sox "$f" "converted/${f%%.wav}.wav" pitch 200
done
또는:
for f in *.wav; do
for p in 100 200 300 400 500 600 -100 -200 -300 -400 -500 -600 ; do
sox "$f" "converted/${f%%.wav}.$p.wav" pitch "$p"
done
done