У меня есть старый архив видео (около 400 ГБ / 1024 файла), которые сильно структурированы из-за программы, которая их создала в то время.
Существует одна папка с именем master
, которая содержит множество других папок для определенных записанных событий. Я думал об использовании for i in *.vob; do ffmpeg -i "$i" "${i%.*}.mp4"; done
(из ответа другого пользователя SO на другой вопрос), но этого недостаточно, поскольку файлы .vob не все находятся в папке master
, а находятся в разных папках в master
.
Более того, заголовки .vob бессмысленны (и еще хуже перекрываются! Видео 1 (в папке 1), Видео 1 (в папке 2), поэтому их нельзя назвать одинаковыми в одной и той же папке, если я присоединился все они.
У меня вопрос, могу ли я выполнить обход дерева master
, используя скрипт (я использую KDE), который берет каждый .vob
файл и конвертирует его, используя что-то похожее на for i in *.vob; do ffmpeg -i "$i" "${i%.*}.mp4"; done
в master
, но с имя папки вместо имени файла?
Итак, если бы мы были в папке Assault On The Control Room
и преобразовали Video 1
и Video 2
, могли бы это вывести Assault On The Control Room 1
и Assault On The Control Room 2
и переместить преобразованный файл в /somefilepath/master2
, который содержит все преобразованные файлы?
Очевидно, что метки будут устанавливаться с использованием ffmpeg и цикла for, но мои навыки написания сценариев пока не подходят для этой задачи.
РЕДАКТИРОВАТЬ 0: Выход shopt -s globstar; for v1 in **/*.vob; do v2=$(awk -F'/' '{print "/somefilepath/master2/" $(NF-1) " - " $NF ".mp4"}' <<< "$v1"); ffmpeg -i "$v1" "$v2"; done
sarah@ConvergentRefuge:/media/sarah/SENTINEL/Master$ shopt -s globstar; for v1 in **/*.vob; do v2=$(awk -F'/' '{print "/media/sarah/SENTINEL/Videos/NewMaster" $(NF-1) " - " $NF ".mp4"}' <<< "$v1"); ffmpeg -i "$v1" "$v2"; done
ffmpeg version N-91290-g6129b13 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/home/sarah/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/sarah/ffmpeg_build/include --extra-ldflags=-L/home/sarah/ffmpeg_build/lib --extra-libs='-lpthread -lm' --bindir=/home/sarah/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
libavutil 56. 18.102 / 56. 18.102
libavcodec 58. 20.102 / 58. 20.102
libavformat 58. 17.100 / 58. 17.100<br>
libavdevice 58. 4.101 / 58. 4.101<br>
libavfilter 7. 25.100 / 7. 25.100<br>
libswscale 5. 2.100 / 5. 2.100<br>
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
**/*.vob: No such file or directory
РЕДАКТИРОВАТЬ 1 : просмотр основной папки