解压缩命令中的Shell脚本语言帮助

时间:2015-01-14 04:08:04

标签: bash shell unix

我有一个名为ISAS01_102013 (issue 296 and 297).zip的zip文件夹 当我解压缩目录时,它创建了一个名为ISAS01_102013 (issue 296 and 297)的目录。

尝试执行cd ISAS01_102013 (issue 296 and 297)时,由于文件夹名称中有空格,我收到错误。如何以ISAS01_102013 (issue 296 and 297)以外的文件夹名称导出zip数据,例如名为/data的文件夹。收到的文件夹"ISAS01_102013 (issue 296 and 297).zip"始终是动态的。


[编辑]

代码:

#zip_research is the folder where we place the zip datas got 
#i.e. RSIS01_122014 (Issue 238 to 249).zip, ISAS03_072014 (Issue 19).zip etc 
cd zip_research 
unzip -o *.zip 

#Considering it has only one unzipped folder 
for dir in * 
do 
    cd $dir 
done 

错误讯息:

error: cd: RSIS01_122014 No such file or directory exists 

2 个答案:

答案 0 :(得分:2)

我不确定您使用什么程序来解压缩文件,但是您应该看看是否有命令行选项以某种方式命名提取的数据。例如:

unzip package.zip -d data;
cd data;

但是,如果您在命令中转义空格,则文件名中包含的空格没有问题 如果您有一个名为ISAS01_102013 (issue 296 and 297)的目录,则 您可以使用以下命令进入该目录:
 cd ISAS01_102013\ \(issue\ 296\ and\ 297\)/

或更简单地,将目录名称包装在引号中:

cd "ISAS01_102013 (issue 296 and 297)"/

答案 1 :(得分:0)

最初,我在这个问题上尝试了awk sed cut,但我得到了同样的错误。 所以,我在评论中吃了我的话,问题应该采用不同的方式来解决。

我的解决方案:(当然问题有很多解决方案)

#!/bin/bash

# change directory to zip_research
cd zip_research 

# grep zip file in the directory line by line
while read line;
do
    unzip -o "$line";
done <<< "`ls|grep -G '.zip$'`";