Параметр -x
немного странный;Вы перечисляете файлы, начиная с -x
и заканчивая знаком @
:
zip file.zip -r * -x dir1 dir2 file1 file2 @
Я также серьезно сомневаюсь, что вы хотите \
в ваших именах файлов в системе Unix ... убедитесь, что ваши путиОК./
является обычным разделителем пути.
Пример:
mkdir tmp5
cd tmp5
touch a b c d e f g
zip foo.zip -r * -x e f g @
adding: a (stored 0%)
adding: b (stored 0%)
adding: c (stored 0%)
adding: d (stored 0%)
С подкаталогами вы можете легко опустить их содержимое , используя подстановочный знак, но кажется, что*
вызывает включение самого каталога (пусто):
mkdir x y z
touch {a,b,c} {x,y,z}/{a,b,c}
zip foo.zip -r * -x c y y/* z z/* @
adding: a (stored 0%)
adding: b (stored 0%)
adding: x/ (stored 0%)
adding: x/b (stored 0%)
adding: x/a (stored 0%)
adding: x/c (stored 0%)
adding: y/ (stored 0%)
adding: z/ (stored 0%)
Возможно, вам лучше опустить *
и явно перечислить те вещи, которые вы делаете хотите включить…
zip core-latest-$version.zip -r cp images include mobile stats \
-x cp/includes/configure.php @
(\
в конце просто продолжается до следующей строки; вы можете поместить все это в одну строку без завершающего \
)