Как получить доступ к Папке/Подпапкам/Файлам с помощью вложенных циклов для преобразований файла?

В структуре как это:

/home/me/Videos/Downloads/Videos/xml tutorials/Main/video1.mp4
/home/me/Videos/Downloads/Videos/xml tutorials/Main/video2.mp4
....
/home/me/Videos/Downloads/Videos/java tutorials/Main/video1.mp4
/home/me/Videos/Downloads/Videos/java tutorials/Main/video2.mp4
....

Я должен преобразовать видео и сохранить новые файлы как это:

/home/me/Videos/Downloads/Videos/xml tutorials/Converted/video1.mp4
/home/me/Videos/Downloads/Videos/xml tutorials/Converted/video2.mp4
/home/me/Videos/Downloads/Videos/java tutorials/Converted/video1.mp4
/home/me/Videos/Downloads/Videos/java tutorials/Converted/video2.mp4

Я хочу преобразовать эти видео использование ffmpeg путем прокручивания вложенного цикла Folder/Subfolders/Videos.

Путем выполнения этого я могу циклично выполниться через все файлы в текущем каталоге:

for f in *; do ffmpeg -i "$f" ... ; done

Как я могу использовать вложенные циклы для этого, так, чтобы сам удар мог автоматически просмотреть Videos/xml tutorials/main/ и сделайте преобразование, вставьте их Videos/xml tutorials/converted, и оно перемещаются в Videos/java tutorials/main/?

0
задан 20 April 2017 в 23:42

1 ответ

Наконец понятый это, по всей вероятности существует более эффективный/оптимизированный способ сделать это, но на данный момент безотносительно работ. Но ffmpeg не взял пробелы в именах, так должен был переименовать всех их путем замены пространства подчеркиванием.

папка In Videos, которая имеет различные учебные руководства, выполняя это, работает -

for f in * ; do
  for g in "$f"/Main/* ; do
     ffmpeg -i "$g" -s 854x480 -c:v libx265 "$f"/Converted/$(basename $g)
  done
done

Здесь, $f получает названия папок, и затем $g получает названия самих файлов, наряду с их путями и расширениями.

1
ответ дан 3 November 2019 в 10:17

Другие вопросы по тегам:

Похожие вопросы: