“nenhum arquivo ou diretório” ao converter vídeos para uma nova estrutura de pastas

“nenhum arquivo ou diretório” ao converter vídeos para uma nova estrutura de pastas

Estou tentando copiar um grande arquivo de vídeos (em subpastas) para uma estrutura de pastas paralela enquanto converto os vídeos de mov para mp4 (além de alguns outros ajustes). Este é o comando:

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

No entanto, recebo "nenhum arquivo ou diretório" para o arquivo de saída. Eu sei que há muitas perguntas semelhantes neste site, mas nenhuma delas foi útil para o meu cenário.
Também tentei criar uma estrutura de pastas vazia de antemão, de modo que só seria necessário criar o arquivo .mp4, mas ainda assim recebo o mesmo erro.

Funciona quando a estrutura de pastas (vazia) já foi criada anteriormente. Mas assim que falta uma pasta, recebo "nenhum arquivo ou diretório".

Existe uma maneira de dizer para ele criar pastas pai, se necessário, para que possa colocar arquivos nelas?

Responder1

Existe uma maneira de dizer para ele criar pastas pai, se necessário, para que possa colocar arquivos nelas?

ffmpeg? Não. Ele não criará pastas sozinho. Na verdade, poucos programas fazem isso.

Algumas sugestões:

  • Você deve criar a pasta com antecedência.
  • Você precisa usar o nome base do arquivo, pois $fjá contém o caminho completo do arquivo.
  • Você deve usar globbing recursivo para seu arquivo de vídeo ( **/*) para percorrer todos os diretórios.

Juntando isso:

# 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

informação relacionada