我有一个使用Play Framework创建的应用程序zip文件。它创建名为A-1.0.zip的zip文件。此zip文件包含名称为A-1.0的目录。 (1.0根据版本变化)
我想解压缩zip文件并将文件夹从A-1.0重命名为A.这样我的应用程序init.d脚本就会找到启动应用程序的目录。这个shuld可以使用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
。
答案 0 :(得分:2)
我没有找到任何特定的解压缩选项来自动执行此操作,但设法通过创建临时符号链接来实现此目标,以便以这种方式人为地重定向提取的文件
ln -s A A-1.0
unzip A-1.0.zip
rm A-1.0
答案 1 :(得分:1)
从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
答案 2 :(得分:-1)
编辑:此答案不保留子目录。如果没有或不需要子目录结构,它可以正常工作。
我发现你可以将@géza-török的答案与@ david-c-rankin提到的unzip -j A-1.0.zip 'A-1.0/*' -d /the/output/dir
选项结合起来(在问题下方的评论中)。这导致// shrinkResources true
// minifyEnabled true
。这只会处理A-1.0 /中的文件并将它们直接输出到给定的输出目录中。
来源:https://linux.die.net/man/1/unzip(看看-j)