ビデオを新しいフォルダ構造に変換するときに「そのようなファイルまたはディレクトリはありません」

ビデオを新しいフォルダ構造に変換するときに「そのようなファイルまたはディレクトリはありません」

ビデオを mov から mp4 に変換しながら (さらに他の調整も行いながら)、大量のビデオ アーカイブ (サブフォルダー内) を並列フォルダー構造にコピーしようとしています。コマンドは次のとおりです。

for f in Users/me/VIDEOARCHIVE/*/*.mov; do ffmpeg -i "$f" "Users/me/CONVERTED/${f%.mov}.mp4"; done

しかし、出力ファイルには「そのようなファイルまたはディレクトリはありません」というメッセージが表示されます。このサイトには同様の質問がたくさんあることは知っていますが、どちらも私のシナリオには役立ちませんでした。
また、.mp4 ファイルのみを作成するように事前に空のフォルダー構造を作成してみましたが、それでも同じエラーが発生します。

事前に (空の) フォルダー構造がすでに作成されている場合は機能します。ただし、フォルダーが見つからないとすぐに、「そのようなファイルまたはディレクトリはありません」というメッセージが表示されます。

必要に応じて親フォルダーを作成し、そこにファイルを配置できるようにする方法はありますか?

答え1

必要に応じて親フォルダーを作成し、そこにファイルを配置できるようにする方法はありますか?

ffmpeg ですか? いいえ。ffmpeg は独自にフォルダーを作成しません。実際、これを実行するプログラムはほとんどありません。

いくつかの提案:

  • 事前にフォルダを作成しておく必要があります。
  • $fすでに完全なファイル パスが含まれているため、ファイルのベース名を使用する必要があります。
  • **/*すべてのディレクトリを走査するには、ビデオ アーカイブ ( ) に再帰的なグロビングを使用する必要があります。

まとめると次のようになります。

# enable recursive globbing
shopt -s globstar
# create the directory if necessary
dir="/Users/me/CONVERTED/"
mkdir -p "$dir"
# iterate over all files
for f in /Users/me/VIDEOARCHIVE/**/*.mov; do
    # get the file's basename
    fname="$(basename "$f")"
    # run the command, replacing the file extension
    ffmpeg -i "$f" "$dir/${fname%.mov}.mp4"
done

関連情報