У меня есть этот bash one-liner, он отлично работает на OSX, но не на Linux, я подозреваю, что дистрибутив linux (Busybox) на моем Qnap как-то связан с этим.
Вот команда, которая работает на OSX:
find . -type f -name "*.mp4" -exec bash -c 'ffmpeg -i "$0" -c:v copy -c:a libfaac -af "volume=23dB" "fix/$0"' '{}' \;
Теперь о Qnap:
find . -type f -name "*.mp4" -exec bash -c 'ffmpeg -i "$0" -c:v copy -c:a libfaac -af "volume=23dB" "fix/$0"' '{}' \;
возвращает:
BusyBox v1.01 (2015.05.21-17: 32+0000) двоичный файл с несколькими вызовами
Использование: найти [ПУТЬ ...] [Выражение]
Поиск файлов в иерархии каталогов. PATH по умолчанию является текущим каталогом; EXPRESSION по умолчанию - '-print'
ВЫРАЖЕНИЕ может состоять из: -Следовать Разыменовать символические ссылки. -name PATTERN Имя файла (удаленные ведущие каталоги) соответствует PATTERN. Печать отпечатка (по умолчанию и предполагается).
-тип X Тип файла соответствует X (где X - одно из: f, d, l, b, c, ...) - PERM PERMS Разрешения соответствуют любому из (+NNN); все (-NNN); или точно (NNN) -mtime TIME Модифицированное время больше, чем (+N); меньше чем (-N); или точно (N) дней
Например, если команда find не работает, поэтому, если я выполню только команду find :
find . -type f -name "*.mp4"
он работает просто отлично, я получаю все свои файлы, поэтому я подозреваю, что проблема заключается в передаче файлов в команду exec , и вот где я не могу понять это
bash версия osx : GNU bash, версия 3.2.57(1)-релиз (x86_64-apple-darwin14)
bash версия linux : GNU bash, версия 3.2.57(1)-релиз (i686-pc-linux-gnu)