В командной строке 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, без фактического удвоения пространства