Скрипт для запуска файлов в каталоге

Я хочу написать скрипт, который автоматизирует следующую процедуру: каждую неделю я копирую около 5-10 видеофайлов в каталог и удаляю аудиопоток каждого файла, используя avcodec. Я подумал, что это хорошая отправная точка для написания моего первого скрипта на bash. Следует проверить имена файлов в каталоге (00001.MTS,00002.MTS,...) и выполнить команду для каждого файла. Я пришел из Python и Matlab, где я мог бы написать этот скрипт, используя цикл for или while.

Я был бы рад не получить готовый код для моей проблемы, но несколько ссылок, где я могу найти необходимую информацию.

Спасибо Крис

1 ответ

Проверьте man find, Это гибкий и мощный инструмент, о котором вы обязательно должны думать, когда слышите "несколько файлов из каталога". Хотите ли вы просто найти их (-print), или в этом случае выполните команду для каждого из них (-exec):

find "$HOME"/some/videos -type f -name "*.MTS" \
    -exec av_encoder_too --remove-audio ... {} \;

Примечание:

  • буквальную точку с запятой в конце необходимо экранировать обратной косой чертой.
  • {} это буквальная пара фигурных скобок - вот где find будет подставлять в каждый файл, который он находит при запуске команд.
  • первая обратная косая черта в конце строки - это просто разделение длинной команды на две строки. Вы могли бы так же легко опустить это и написать все это как одну длинную командную строку

Конечно, вам нужно будет предоставить правильные значения для

  • каталог "$HOME"/some/videos
  • инструмент кодировщика и его аргументы av_encoder_too --remove-audio ...

После того, как у вас это получится, в качестве следующего шага на пути к обучению я рекомендую изучить xargs Команда - это другой подход к вопросам "сделай что-нибудь со многими файлами".

Счастливого взлома,
./ddd

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