首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在unix中解压缩具有.done文件的Zip文件

在unix中解压缩具有.done文件的Zip文件
EN

Stack Overflow用户
提问于 2012-12-04 07:27:02
回答 2查看 1.3K关注 0票数 0

问题陈述:,我想从/home/a/ zip _input这样的文件夹中解压缩文件,其中有两个压缩文件,如: /home/a/zip_input _EOD-20121129.zip b_EOD-20121129.zip

另外,每个zip都有一个对应的.done文件(基本上是在完全复制一个.done文件之后),比如:a_EOD-20121129.zip.do b_EOD-20121129.zip.do

我试图编写一个脚本来解压缩具有相应.done文件的文件,并将该文件移动到/home/b/ file _ and位置。在文件被明确地移动之后,我想用.done ext创建一个文件。例如:每个zip都有一个xml文件,如a_EOD-20121129.xml/b_EOD-20121129.xml

因此,输出文件夹将具有如下内容:

a_EOD-20121129.xml a_EOD-20121129.xml.do b_EOD-20121129.xml b_EOD-20121129.xml.do

我尝试了什么直到现在:

代码语言:javascript
运行
复制
for file in $(find . -name "*.zip" -type f)
do
    unzip $file -d /home/b/file_input
    rm $file    
done

它解压缩. the /b.zip并创建xml文件。

我面临的问题-

  1. 如何在脚本中生成只选择具有相应.done文件的文件的条件?
  2. 如何在解压缩和移动文件后创建相应的.done文件。(必须使用文件名并创建一个名称相同的.done文件)?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-04 07:42:39

您可以尝试以下脚本(未经测试):

代码语言:javascript
运行
复制
for file in $(find . -name "*.zip" -type f)
    do
      if [ -f $file".done" ];    then         #test if there is a done file for that zip
          unzip $file -d /home/b/file_input
          for filezip in `unzip -l $file | awk '/.xml$/{print $NF}'`; do  #creates the .done files for each file inside the zip
             touch /home/b/file_input/$filezip".done"
          done
          rm $file    
      fi
    done
票数 1
EN

Stack Overflow用户

发布于 2012-12-04 07:38:27

单向(未测试)

代码语言:javascript
运行
复制
for file in $(find . -name "*.zip" -type f)
do
    [ -f "${file}.done" ] || continue
    unzip $file -d /home/b/file_input
    for file1 in $(unzip -l $file | awk '/.xml$/{print $NF}')
    do
       cp /home/b/file_input/$file1 /home/b/file_input/${file1}.done
    done
    rm $file    
done

使用.done条件对-f文件进行检查。如果它是假的,意味着.done文件不存在,则循环将继续选择下一个文件。cp命令将从.done文件创建一个.zip文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13697987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档