1

У меня есть каталог

main_folder
  first_folder
    second_folder
      empty.txt
      another_folder
        another_empty.txt

Я хочу second_folder , и я в main_folder , поэтому я заархивировал с помощью команды

zip -jr first_folder/zip_file first_folder/second_folder

ZIP-файл содержит

empty.txt
another_empty.txt

Но я хочу

empty.txt
another_folder
  another_empty.txt

Как я могу это иметь?

2 ответа2

1

С man-страницы для почтового индекса

-j --junk-paths Store just the name of a saved file (junk the path), and do not store directory names. By default, zip will store the full path (relative to the current directory).

Просто удаление -j должно исправить это.

1

Установленный вами флаг -j (пути нежелательной почты) убивает то, что вы хотите, так как он удаляет пути к папкам. При этом, однако, я не вижу способа просто сделать второй +. Со страницы человека:

Вы можете создать zip-архив, содержащий файлы в foo, без записи имени каталога, foo. Вы можете использовать опцию -j, чтобы не указывать пути, как в:
zip -j foo foo/*

Из того, что я могу сказать, это именно то, как это работает в "молнии" (ничто в человеке не предполагает иначе).

Редактировать: Я был немного после другого парня, когда я пытался выяснить, как делать то, что вы хотите.

Почему бы вам просто не перейти к каталогу и не сжать его? Если вы хотите вернуться туда, где вы были, это будет сделано (хотя это пустая трата времени).

cd first_folder/second_folder/ && zip -r name ./ && mv name.zip $ {здесь} && cd -

(Спасибо @KarthikT за ярлык "cd -").

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .