一括移転

一括移転

複数のオーディオファイルをファイルごとに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個のファイルを返します。

しかし、最初の問題を解決するのに役立つと、2番目の問題も私が直接解決できるようです。

これでパート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

使用一つ(および単一の)ループ内で実行される各コマンドに対して、1つではなくループごとに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

おすすめ記事