2014-11-06 84 views
4

我有一个使用Play Framework创建的应用程序zip文件。它创建名称为A-1.0.zip的zip文件。该zip文件包含名称为A-1.0的目录。 (根据版本不同而有所不同)提取zip文件内容并动态重命名目录

我想提取压缩文件并将文件夹从A-1.0重命名为A.以便我的应用程序init.d脚本找到启动应用程序的目录。这个shuld是使用shell脚本动态完成的。

有没有一种方法,我可以提取所有的zip文件到一个文件夹,而不是提取到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

+2

虽然这是可能的,这个问题并没有表现出任何编码工作。似乎是要求代码写作服务,而不是什么SO。请用你试过的东西更新你的问题。 – Matt 2014-11-06 06:04:40

+0

希望我已经给了我所尝试的。对不起,我没有更新我在第一个地方...... – Spidey 2014-11-06 06:53:39

+1

一个简单的'unzip --help'公开了使用'unzip -d〜/ A -j A-1.0.zip'可以做到你想要的。 (测试 - 我没有验证,只是读取) – 2014-11-06 08:04:37

回答

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 
+1

它不工作。这只是将所有内容提取到〜/ A /中。提取后的目录看起来像这样〜/ A/A-1.0/[contents] – Spidey 2014-11-06 15:02:01

+0

可怕的故事......当我靠近我的linux盒子时,我会尝试一下 – 2014-11-06 17:12:59

+0

对我而言没有效果。使用UnZip 6.00。 – Joachim 2018-02-26 10:16:43

2

我没有发现任何具体的解压选项来自动执行此,而是设法通过以人为重定向创建一个临时的符号链接来实现这一目标提取的文件这样

ln -s A A-1.0 
unzip A-1.0.zip 
rm A-1.0 
+1

虽然如果unzip有一个选项(类似于tar --transform)会更好,但这种方法对我来说确实有效,可以与unzip -o(覆盖)一起使用。这对我来说比mv更好,因为mv目标文件夹不能存在。 – Joachim 2018-02-26 10:31:11