循环以从一个目录解压缩到各个目录

时间:2014-03-05 20:06:21

标签: bash shell sh unzip

我正在尝试设计一个循环,它实现了我以前见过的很多单个元素,这个组合让我失望。基本上我有这样的结构:

/bin/script.sh
/conf/patches/1.zip
/conf/patches/2.zip
/conf/patches/3.zip
/sharedir

我想要一个循环,但是我会在/ conf / patches中找到许多补丁,将每个补丁解压缩到/ sharedir中的一个单独目录中。应将每个目录命名为文件名。

到目前为止我尝试的是:

for file in '../conf/patches/*.zip'
do
    unzip "${file%%.zip}" -d /sharedir/$file
done

正如你所看到的......在这种组合中我肯定缺少一些东西。

2 个答案:

答案 0 :(得分:1)

从glob模式中删除引号,否则不会展开:

for file in ../conf/patches/*.zip
do
    unzip "${file%%.zip}" -d /sharedir/
done

编辑:您可以尝试

for f in ../conf/patches/*.zip; do
   echo g="${f%%/*}"
   unzip -d "sharedir/${g%*.zip}" "$f"
done

答案 1 :(得分:1)

试试这个:

for file in /conf/patches/*.zip
do
  f="${file##*/}"
  mkdir -p "/sharedir/${f%.zip}"
  unzip -d "/sharedir/${f%.zip}" "${file}"
done
相关问题