Próbuję skopiować duże archiwum filmów (siedząc w podfolderach) do równoległej struktury folderów, konwertując wideo z mov na mp4 (plus kilka innych poprawek). To jest polecenie:
for f in Users/me/VIDEOARCHIVE/*/*.mov; do ffmpeg -i "$f" "Users/me/CONVERTED/${f%.mov}.mp4"; done
Jednak otrzymuję „brak takiego pliku lub katalogu” dla pliku wyjściowego. Wiem, że na tej stronie jest wiele podobnych pytań, ale żaden z nich nie był pomocny w moim scenariuszu.
Próbowałem też wcześniej utworzyć pustą strukturę folderów, tak że musiałbym tylko utworzyć plik .mp4, ale nadal pojawia się ten sam błąd.
Działa, gdy wcześniej utworzono (pustą) strukturę folderów. Ale gdy tylko brakuje folderu, otrzymuję „brak takiego pliku lub katalogu”.
Czy istnieje sposób, aby powiedzieć mu, aby tworzył foldery nadrzędne, jeśli musi, aby mógł umieszczać w nich pliki?
set -x
wcześniej lubecho "Users/me/CONVERTED/${f%.mov}.mp4"
wewnątrz pętli? To powinno dać ci jakąś wskazówkę.ffmpeg
nie twórz folderów, jeśli trzeba (odpowiednio przeredagowałem moje pytanie).ffmpeg
nie tworzy katalogów podczas wysyłania. W Twoimdo
zapętlić przed twoimffmpeg
wywołać ścieżkę katalogu, który będzie zawierał plik wyjściowy, imkdir -p
to. Opcjonalnie sprawdź istnienie przed próbą utworzenia.Odpowiedzi:
ffmpeg? Nie. Nie tworzy folderów samodzielnie. Właściwie robi to bardzo niewiele programów.
Jakieś sugestie:
$f
zawiera już pełną ścieżkę do pliku.**/*
) do przechodzenia przez wszystkie katalogi.Łącząc to:
źródło