Linux:创建zip归档文件时指定顶级目录


17

我的项目具有通常的目录结构(src /,bin /,...),即

project-name/
|-- bin
|-- lib
|-- src
`-- Makefile

并希望创建具有以下目录结构的档案:

project-name-version/
|-- bin
|-- lib
|-- src
`-- Makefile

有没有一种巧妙的方法可以避免在project-name/其他地方创建临时目录,然后在最终调用zip -r ...该临时目录的内部复制文件?

(我基本上是在寻找某种路径前缀或相对路径选项。)

Answers:


9

也许这已经发生在您身上了,但是为什么不只使用符号链接而不是复制所有内容呢?

ln -s project-name project-name-version

然后zip -r通过符号链接使用(zip默认情况下会取消引用符号链接)吗?完成后,您可以简单地rm建立符号链接。也许这不是最优雅的解决方案,但我不知道zip直接实现此目的的明显方法。


1
tar如果您使用-h标志,这也适用。
凯尔·斯特兰德

(我也在使用该z标志;我不确定是否会影响它。)
Kyle Strand

15

这不仅仅是建议,还是答案:使用Git

如果您为项目设置一个Git存储库,那么整个过程将变得非常简单:

git archive HEAD --prefix=project-name-version/ \
    --format=zip -o project-name-version.zip

1
很好的建议,谢谢。git存档文档:git-scm.com/docs/git-archive
Meglio

1
虽然使用版本控制是一个好主意,但此答案与一般情况下的问题不匹配。
raimue '16

@Raim“这不仅仅是建议,还是答案:使用Git!” 自4年以来一直在那儿写,谢谢你指出来……
cYrus

1
如果不希望以此作为答案,则应将其转换为评论。
raimue '16

1
@Gregor我认为这是一种理想的行为,因为此类文件实际上是项目的一部分,无论如何您都可以使用Git属性,例如,创建一个名为.gitattributes包含的文件.git* export-ignore
cYrus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.