Назад | Перейти на главную страницу

Сохранить файл в zip-архиве с другим именем (командная оболочка linux)

В командной строке Linux вы заархивируете файл:

zip -mqj archive.zip file.txt

Теперь мне нужно сохранить файл file.txt как file2.txt в файле archive.zip, не переименовывая его перед архивированием. После распаковки файл должен называться file2.txt.

Как я могу сохранить файл под другим именем? Прочитал страницу MAN и не нашел ответа.

Видеть https://stackoverflow.com/questions/16710341/linux-zip-command-add-a-file-with-different-name

Приведенное ниже решение является точной копией ответа @mkrnr на stackoverflow

Вы можете использовать zipnote, который должен поставляться с zip-пакетом.

Сначала создайте zip-архив с файлом myfile.txt:

zip archive.zip myfile.txt

Затем переименуйте myfile.txt внутри zip-архива следующим образом:

printf "@ myfile.txt\n@=myfile2.txt\n" | zipnote -w archive.zip

(Благодаря Йенс для предложения printf вместо того echo -e.)

Краткое объяснение "@ myfile.txt\n@=myfile2.txt\n":

Из zipnote -h: "@ name" может сопровождаться строкой "@ = newname" для изменения имени

И \n разделяет две команды.

Эй, это мой первый ответ, надеюсь, я все сделал правильно :-)

Вот мое решение вашей проблемы, приятное однострочное письмо:

cp file.txt file2.txt | zip -mqj archive.zip file2.txt

Надеюсь, я смогу помочь!

Считается ли создание жесткой ссылки на file.txt?

ln file.txt file2.txt

Создайте file2.txt, который указывает на тот же индекс, что и file.txt, без фактического удвоения пространства