ルカシュTracewski:
私は、次のディレクトリ構造を持っています:
dir1/file.ogg
dir2/file.ogg
dir3/file.ogg
file2.ogg
私はすべて変換したい.ogg
にファイルを.wav
GNUパラレルで。私がこれまでに得たのはここです:
find . -name '*.*' -type f -print0 | parallel -0 ffmpeg -i {} outputdir/{/.}.wav
ここでの問題は、明らかにディレクトリの名前が異なるものの、ファイルが内部に同じ名前を持っていることです。上記のコマンドは、連続して、ディレクトリの内容を上書きします。私が代わりたいことは次のとおりです。
outputdir/dir1_file.ogg
outputdir/dir2_file.ogg
outputdir/dir3_file.ogg
outputdir/dir3_file2.ogg
基本的に、私はサブディレクトリ名を抽出し、ファイルベース名でそれを連結し、私自身の拡張子をつけたいと思います。
何か案は?
フィリップ:
perlの変換を使用して、このコマンドは、必要な効果を実現する必要があります。
find . -name '*.ogg' -type f -print0 | parallel -0 echo ffmpeg -i {} outputdir/{= '$_ =~ s[^\./][]; $_ =~ s[/][_]g; $_ =~ s[ogg$][wav]g;' =}
削除echo
ffmpegのコマンドを実行します