我有一个使用Play Framework创建的应用程序zip文件。它将创建名为A-1.0.zip的zip文件。此zip文件包含名为A-1.0的目录。(1.0根据版本的不同而变化)
我想解压zip文件并将文件夹从A-1.0重命名为A,这样我的应用程序init.d脚本就可以找到启动该应用程序的目录。这应该使用shell脚本动态完成。
有没有办法可以将所有zip文件解压缩到A文件夹中,而不是解压缩到A-1.0并重命名??请帮帮我!
下面是我尝试过的.
unzip A-1.0.zip -d ~/A(我知道我这样做是非常愚蠢的!)
这会将文件解压缩到~/A/A-1.0/[contents]中
我需要将所有内容提取到~/A中,而不是~/A/A-1.0/中。我不知道如何使用命令行执行此操作。
我的init.d脚本搜索~/A/bin/A -Dhttp.port=6565 -Dconfig.file=~/A/conf/application.conf来开始播放!应用程序。
要使此脚本正常工作,我将所有内容解压缩到A-1.0中,然后使用mv ~/A-1.0 ~/A手动重命名。
发布于 2017-07-20 16:55:01
我没有找到任何特定的解压选项来自动执行此操作,但我设法通过创建一个临时符号链接来实现此目标,以便以这种方式人为地重定向解压的文件
ln -s A A-1.0
unzip A-1.0.zip
rm A-1.0发布于 2014-11-06 15:51:23
从unzip man page可以归结为:
unzip A-1.0.zip 'A-1.0/*' -d /the/output/dir
^ ^
| |
| +- files to extract (note the quotes: unzip shall parse the wildcard instd of sh)
+- The archive发布于 2018-04-06 13:20:29
编辑:此答案不保留子目录。如果用户没有或不需要子目录结构,那么它工作得很好。
我发现您可以将@géza-török的答案与@david-c-rankin (在问题下面的评论中)提到的-j选项结合起来。这就引出了unzip -j A-1.0.zip 'A-1.0/*' -d /the/output/dir。这将只处理A-1.0/中的文件,并将它们直接输出到给定的输出目录中。
来源:https://linux.die.net/man/1/unzip (查看-j)
https://stackoverflow.com/questions/26772701
复制相似问题