![使用不同的名称将文件存储在 zip 档案中(Linux 命令 shell)](https://linux22.com/image/483770/%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E5%90%8D%E7%A7%B0%E5%B0%86%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8%E5%9C%A8%20zip%20%E6%A1%A3%E6%A1%88%E4%B8%AD%EF%BC%88Linux%20%E5%91%BD%E4%BB%A4%20shell%EF%BC%89.png)
在 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
希望我能帮上忙!