Параметр разрешений игнорируется и автоматически изменяется на default_permissions всякий раз, когда в него также включается любой из следующих параметров:
uid
, gid
, umask
, dmask
или fmask
Чтобы исправить это, вы можете использовать user_id
и group_id
вместо uid
и gid
.
Но вы не должны использовать umask
, dmask
или fmask
с разрешениями
.
Вы поймете, что это работает, когда получите следующий статус от mount:
Использование сопоставления пользователей по умолчанию
Обратите внимание, что изначально все файлы принадлежат пользователю root. Возможно, вы захотите изменить их рекурсивно, чтобы они принадлежали вам.
-exec
принимает два параметра: команду для выполнения и флаг, сообщающий find
, должна ли команда запускаться один раз за совпадение (;
) или как максимальное количество файлов за запуск ( +
).
Кроме того, параметры zip
неверны.
Тест -name
тоже не работает; требуется только один шаблон за раз. Если вы хотите проверить несколько шаблонов, вам нужно использовать несколько тестов -name
, объединенных с помощью -o
(«или»), и заключить их в круглые скобки (спасибо xhienne за указание на это):
find /lmms/samples/ \( -name "warp01*" -o -name "JR_effect2k*" ... \) -exec ...
(цитирование каждого шаблона во избежание проблем с подстановкой оболочки).
В общем, если вы исправите свои проверки имен и завершите свой find
на
-exec zip ~/Desktop/files.zip {} +
, все должно работать правильно.
Вам просто нужно завершить опцию -exec
с помощью ;
или +
( человек находит
). Ваш файл zip
должен предшествовать файлам, которые вы помещаете в свой архив IIRC, поэтому он будет выглядеть следующим образом:
find ... -exec zip ~/Desktop/files.zip {} ;
find ... -exec zip ~/Desktop/files.zip {} +
Версия +
объединяет параметры в конце zip
и вызывает один zip
для всех файлов (или несколько zip
, если ваши команды действительно длинные). Это менее интенсивно ввод-вывод, но недостатком является то, что вы можете использовать {}
только один раз и в конце, непосредственно перед +
. Версия ;
более гибкая, но вызывает zip
для каждого файла.
У вас также есть проблема с предикатом -name
, и @StephenKitt дает вам правильный синтаксис.
Вот еще один синтаксис, который использует способность zip
понимать шаблоны подстановки, такие как file *
. Поэтому он не использует find
, он ближе к вашему исходному предложению и, вероятно, менее подвержен ошибкам для тех, кто не привык к find
:
$ zip -r ~/Desktop/files.zip /lmms/samples/ --include 'warp01*' 'JR_effect2k*' 'clean_low_key*' 'q_kick_2*' 'sticky_q_kick*' 'upright_bass*' 'pizzi*' 'chorded_perc*' 'Tr77_kick*' 'Tr77_tom1*' 'Tr77_cym*' 'hihat_008a*' 'Hat_o.ds' 'Hat_c.ds' 'Kickhard.ds' 'Tr77_snare*'
Примечание: шаблоны разделяются пробелом . Кавычки вокруг них являются обязательными, иначе шаблоны могут быть интерпретированы вашей оболочкой, а не zip
.