使用unix shell脚本遍历zip文件中的文件夹

时间:2014-03-20 13:21:01

标签: unix

我的zip文件里面有我的文件夹。解压缩我的zip文件后,我想为zip中的可用文件夹迭代一个循环。

内部循环条件如下:

如果我的文件夹有索引文件(这是一个包含一些数据的文件),那么我只想运行一些进程(我知道这个进程是什么......)。否则我们可以忽略该文件夹。

如果有任何内容,那么循环将继续使用其他文件夹

感谢提前..

1 个答案:

答案 0 :(得分:0)

这样的事情?

(注意:我假设$ destdir只包含zip文件及其提取!)

zipfile="/path/to/the/zipfile.zip"
destdir="/path/to/where/you/want/to/unzip"
indexfile="index.txt" #name of the index files
mkdir -p "$destdir" 2>/dev/null  #make "sure" it exists.. but ignore errors in case it already exists

cd "$destdir" || { echo "Can not go into destdir=$destdir" ; Exit 1 ; }
#at that point, we are inside $destdir : we can start to work:
unzip "$zipfile"
for i in ./*/ ; do  # you could change ./*/ to ./*/*/ if the zip contains a master directory too
   cd "$i" && {  #the && is important: you want to be sure you could enter that subdir!
      if [ -e ./"$indexfile" ]; then
          dosomething  # you can define the function dosomething and use it here.. 
                       # or just place commands here
      fi
      cd - #we can safely this works, as we started there...
   }
done

注意:我在./*/而不是*/上进行迭代,因为dirname可能包含leding -,因此使cd -something无法正常工作(它会说它可以'认识到一些选择!)!如果./消失,cd ./-something就可以了!