일괄 조옮김

일괄 조옮김

여러 오디오 파일을 파일당 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

관련 정보