Скрипт для запуска файлов в каталоге
Я хочу написать скрипт, который автоматизирует следующую процедуру: каждую неделю я копирую около 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