使用不同的名称将文件存储在 zip 档案中(Linux 命令 shell)

使用不同的名称将文件存储在 zip 档案中(Linux 命令 shell)

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

zip -mqj archive.zip file.txt

现在,我需要将“file.txt”存储为“file2.txt”在“archive.zip”中,而无需在压缩前重命名文件。解压缩后,该文件应称为“file2.txt”。

我怎样才能用不同的名称存储文件?通读 MAN 页,没有找到答案。

答案1

创建到 file.txt 的硬链接算吗?

ln file.txt file2.txt

创建 file2.txt,它指向与 file.txt 完全相同的 inode,但实际上并不将空间加倍

答案2

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

以下解决方案与以下答案完全相同@mkrnr在 stackoverflow 上

您可以使用 zip 包附带的 zipnote。

首先使用 myfile.txt 文件构建 zip 存档:

zip archive.zip myfile.txt

然后使用以下命令重命名 zip 存档中的 myfile.txt:

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两个命令分开。

答案3

嗨,这是我的第一个回答,所以我希望我做的一切都是正确的:-)

这是我针对您的问题的解决方案,一个很好的单行代码:

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

希望我能帮上忙!

相关内容