将文件以不同名称存储在zip存档中(linux命令行界面)

在一个linux命令行中,您可以通过以下方式压缩文件:

zip -mqj archive.zip file.txt 

现在,我需要在'archive.zip'中将'file.txt'存储为'file2.txt',而不必在压缩之前重命名文件。 当解压缩时,该文件应该被称为“file2.txt”。

如何以不同的名称存储文件? 仔细阅读MAN页面,没有find答案。

创build一个硬链接到file.txt计数?

ln file.txt file2.txt

创build指向与file.txt完全相同的inode的file2.txt,而不是实际上将空间加倍

请参阅https://stackoverflow.com/questions/16710341/linux-zip-command-add-a-file-with-different-name

下面的解决scheme是在stackoverflow上@mkrnr的答案的确切副本

您可以使用应该与zip包一起提供的zipnote。

首先用myfile.txt文件构buildzip文件:

 zip archive.zip myfile.txt 

然后用以下命令将zip文件内的myfile.txt重命名为:

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

(感谢Jensbuild议printf而不是echo -e 。)

"@ myfile.txt\n@=myfile2.txt\n"简短说明:

zipnote -h :“@ name”后面可以跟一个“@ = newname”行来更改名称

\n分离这两个命令。

Hy在那里,这是我的第一个答案,所以我希望我已经做了一切正确的:-)

这是我的解决你的问题,一个很好的一行:

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

希望我能帮助!