将文件存储在具有不同名称的 zip 存档中(linux 命令外壳)

Tri*_*ash 11 linux compression shell

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

zip -mqj archive.zip file.txt
Run Code Online (Sandbox Code Playgroud)

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

如何使用不同的名称存储文件?通读 MAN 页面并没有找到答案。

小智 10

/sf/ask/1169723901/

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

您可以使用 zipnote,它应该随 zip 包一起提供。

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

zip archive.zip myfile.txt
Run Code Online (Sandbox Code Playgroud)

然后将 zip 存档中的 myfile.txt 重命名为:

printf "@ myfile.txt\n@=myfile2.txt\n" | zipnote -w archive.zip
Run Code Online (Sandbox Code Playgroud)

(感谢Jens的建议printf而不是echo -e。)

的简短解释"@ myfile.txt\n@=myfile2.txt\n"

From zipnote -h: "@name" 后面可以跟一个 "@=newname" 行来改变名字

并将\n两个命令分开。


Mat*_*ons 4

创建指向 file.txt 的硬链接是否有效?

ln file.txt file2.txt

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