0

ここに示すように、パラメーター展開を使用した bash ファイル名の置換をテストしています: Linux シェル スクリプトでファイル拡張子を変更する方法は?

ただし、次のことを意図したとおりに機能させることができないようです。

次のファイルを指定します。

tmp/01. Losing A Whole Year.flac
tmp/02. Narcolepsy.flac

出力をテストするためのコマンドを実行するfindためにflacファイルをparallel実行します。echoに置き換えようとして.flac.mp3ます。

find tmp -type f -name '*.flac' | time parallel -j+0 --eta 'echo "{} {.flac%%.mp3}"'

私の出力は次のとおりです。

tmp/01. Losing A Whole Year.flac {.flac%%.mp3}
tmp/02. Narcolepsy.flac {.flac%%.mp3}

ffmpegそれが違いを生むなら、私はこれを使用する予定です。

編集:期待される出力:

tmp/01. Losing A Whole Year.flac tmp/01. Losing A Whole Year.mp3
tmp/02. Narcolepsy.flac tmp/02. Narcolepsy.mp3

編集 2: ファイル拡張子を置き換えるには、次を使用できます。

find tmp -type f -name '*.flac' | time parallel -j+0 --eta 'echo "{} {.flac%%.mp3}"'

ただし、これにより次の出力が得られます

tmp/01. Losing A Whole Year.flac tmp/01.\ Losing\ A\ Whole\ Year.mp3
tmp/02. Narcolepsy.flac tmp/02.\ Narcolepsy.mp3

\スペース文字の代わりに文字がある場合、ffmpeg はファイルを見つけることができないため、これは現在 ffmpeg の質問である可能性があります。

4

1 に答える 1

1

私はそれを理解したと思います:

find tmp -type f -name '*.flac' | time parallel -j+0 --eta 'echo "{} {.}.mp3"'

期待される結果が得られます。

ただし、これが機能しない理由はわかりません。

find tmp -type f -name '*.flac' | time parallel -j+0 --eta 'echo "{} {.flac}.mp3"'

編集:上記は機能しているように見え\ますが、空白を置き換えるために文字が挿入されるため、ffmpeg は目的のファイルを見つけられません。

于 2015-11-15T16:55:22.663 に答える