Попробуйте запустить компьютер. Для меня это решило проблему. Я думаю, что это должно быть связано со старой версией панели или меню или с ненужными библиотеками.
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. Снова вы не получите никакого преимущества сжатия.
Используйте это, чтобы сжать все .mp4 файлы в базовом каталоге и его подкаталогах.
$ zip test.zip `find . -name \*.mp4 -print | tr "\n" " "`
Объяснение:
Сжать файл zip file-name.zip path1 path2...
Чтобы получить все пути к файлу с расширением .mp4 в базовом каталоге и все его подкаталог, используйте find:
find . -name \*.mp4 -print
Чтобы перечислить все выходные данные в одной строке, разделенные space, как мы (
$ zip test.zip `find . -name \*.mp4 -print | tr "\n" " "`
Объяснение После прочтения комментария OP:
Просто повторите все найденные пути файла .mp4 файла, например:
for p in `find . -name \*.mp4 -print`
do
zip $p.zip $p
done
Если ваше имя файла содержит пробельный символ, вы можете tr заменить space на backslash space [ ! d10]
Например: используйте $p | tr ' ' "\' '" вместо $p.