在 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
希望我能帮上忙!