Команда Zip для исключения каталогов и файлов - PullRequest
2 голосов
/ 17 января 2012

Я пытаюсь использовать эту команду ssh в centos 5, чтобы заархивировать каталог, полный папок и файлов, но исключаю приведенные ниже примеры. это не работает.

zip -r file.zip * -x dir1 -x dir2 -x file1 -x file2

или этот

zip -r file.zip * -x "dir1" -x "dir2" -x "file1" -x "file2"

Он все еще просто архивирует весь каталог и все, что в нем. Я не хочу dir1 dir2 file1 file2.

Мне нужно знать правильный синтаксис -x для работы функций исключения.

Ответы [ 3 ]

7 голосов
/ 31 октября 2012

Для моей конкретной системы, чтобы исключить каталог, я должен был заключать в кавычки мои исключенные каталоги, и это работало как прелесть:

zip -r myarchive.zip target -x "target/exclude1/*" "target/exclude2/*"

Примечания:

- это исключенои каталог для исключения, и все файлы внутри него.

- Вы должны использовать полный путь к каталогам, которые вы хотите включить и исключить!

- Пока исключения находятся вв конце строки вам не нужен символ @

3 голосов
/ 17 января 2012

Параметр -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 @

(\ в конце просто продолжается до следующей строки; вы можете поместить все это в одну строку без завершающего \)

0 голосов
/ 01 мая 2015

Если вы используете шпатлевку, выполните следующие действия:

  1. Введите свой каталог: $ cd directory_name и нажмите клавишу ввода
  2. Введите команду:

    $ zip -r file_name.zip . -x \*excludingfolderName\*
    

После zip Используйте . для текущего каталога, * - подстановочный знак.

...