Я использую mp4box для перемещения атомов MOOV в файлах MP4.

Дело в том, что у меня будет 6 файлов в заданной папке, и я не хочу запускать команду inter 500 шесть раз подряд.

Можно ли сделать что-то вроде mp4box -inter 500 * в каталоге, чтобы команда запускалась для всех файлов mp4 в этой папке?

1 ответ1

5

Вы можете использовать опцию -exec в find . Здесь '{}' заменяется именем файла каждого файла MP4. Это касается всех видов имен файлов, даже тех, которые содержат пробелы или переводы строк. Вам нужно указать -maxdepth 1 чтобы искать только текущий каталог.

find . -iname "*.mp4" -maxdepth 1 -exec mp4box -inter 500 '{}' \;

Альтернативный, более запутанный способ заключался бы в передаче результата find в цикл с read . Здесь каждый файл ограничен символом NUL , и вам нужно указать read чтобы разделить ввод этого символа, что достигается с помощью -d '' . Вам также необходимо заключить в кавычки переменную "$file" , чтобы пробелы или символы-заглушки в имени были сохранены.

find . -iname "*.mp4" -maxdepth 1 -print0 | while IFS= read -d '' -r file; do mp4box -inter 500 "$file"; done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .