У мене цей одношаровий bash, він працює нормально на 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'
ЕКСПРЕСІЯ може складатися з: -наступних символьних посилань Dereference. -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) -release (i686-pc-linux-gnu)
-exec
в окремий сценарій, ймовірно, буде гарною відправною точкою. Дотримуючись прості шматочки, ви можете чітко визначити обмеження для обходу один за одним.