zip может это сделать. Также обратите внимание, что zip -в файла mp4 неэффективен, поскольку он не даст вам никаких преимуществ по сравнению с пространством, поскольку он уже находится в сжатом формате MPEG4.
Чтобы найти все .mp4 файлы, рекурсивно, начиная с текущего каталога и сохраняя их как files.zip:
zip files.zip -r . -i '*.mp4'
-r обозначает рекурсивную операцию -i '*.mp4 указывает только интересующий нас образец EDIT:
После прочтения ваших комментариев кажется, что вы хотите найти каждый файл .mp4 и создать zip этого файла, а также сделать это для всех .mp4 файлов рекурсивно. Если это так:
find . -type f -name '*.mp4' -exec bash -c 'zip "${1%.mp4}".zip "$1"' _ {} \;
Это найдет все .mp4 файлы, рекурсивно смотрящие из текущего каталога, и zip каждый отдельно. Таким образом, foo.mp4 будет zip -применен как foo.zip. Снова вы не получите никакого преимущества сжатия.