архивирование папки и ее подпапки - PullRequest
0 голосов
/ 04 марта 2020

Эй, ребята, есть ли я в любом случае, я могу сжать папку, а также сжать одну из подпапок в одну строку bash команда?

Changes/
   folder1/
   folder2/
   folder3/         

Я хочу, чтобы сжать изменения (родительская папка) и папка3 ( подпапка)

Примечание. Я не хочу создавать дополнительную папку zip (без дублирования, т. е.

После zip я не хочу видеть это

Changes.zip 
  Changes/   (Duplicate folder)
    Folder1/
    Folder2/
    Folder3.zip
     Folder3/ (Duplicate folder)

Ожидаемый результат

Changes.zip
  Folder1/
  Folder2/
  Folder3.zip

Код, которым я пользуюсь

cd Changes/; zip -r ../Changes.zip * ; 

СПАСИБО

1 Ответ

1 голос
/ 04 марта 2020

Как насчет этого:

cd Changes/ && zip -r Folder3.zip Folder3/* && rm -r Folder3/ && cd .. && zip Changes.zip Changes/* && rm -r Changes/

Это не элегантно, но должно работать.

Я использовал && вместо ;, чтобы не переходить к вторая команда, если только первая не завершится успешно, и добавила подстановочный знак * в конец каждого пути, чтобы получить содержимое каталога, а не сам каталог (как вы сказали, «без дублирования»). Затем мы используем rm -r, чтобы рекурсивно удалить каталог, который был заархивирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...