
비디오를 mov에서 mp4로 변환하는 동안 (하위 폴더에 있는) 대규모 비디오 아카이브를 병렬 폴더 구조로 복사하려고 합니다(다른 조정도 포함). 다음 명령은 다음과 같습니다.
for f in Users/me/VIDEOARCHIVE/*/*.mov; do ffmpeg -i "$f" "Users/me/CONVERTED/${f%.mov}.mp4"; done
그러나 출력 파일에 대해 "해당 파일이나 디렉터리가 없습니다"라는 메시지가 표시됩니다. 이 사이트에 유사한 질문이 많이 있다는 것을 알고 있지만 둘 다 내 시나리오에 도움이 되지 않았습니다.
또한 .mp4 파일만 생성하면 되도록 미리 빈 폴더 구조를 생성해 보았지만 여전히 동일한 오류가 발생합니다.
(빈) 폴더 구조가 이미 미리 생성되어 있으면 작동합니다. 그러나 누락된 폴더가 있으면 "해당 파일이나 디렉터리가 없습니다"라는 메시지가 나타납니다.
필요한 경우 파일을 상위 폴더에 배치할 수 있도록 상위 폴더를 생성하도록 지시하는 방법이 있습니까?
답변1
필요한 경우 파일을 상위 폴더에 배치할 수 있도록 상위 폴더를 생성하도록 지시하는 방법이 있습니까?
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