使用" *"在解压缩命令中

时间:2018-05-17 10:54:54

标签: linux bash shell

我有几个zip文件,我想在其他路径中解压缩只有具有某些特性的文件,所以我在linux中执行这个命令:

{
  "update": {
    "comment": [
      {
        "add": {
          "body": "bug has been fixed"
        }
      }
    ]
  },
  "fields": {
    "resolution": {
      "name": "namem vakye gere"
    }
  },
  "transition": {
    "id": "5"
  }
}

但是这次执行会给我以下内容:

unzip -q -o ./path1/*/"*.zip" Key/* -d /path2/

如果我执行另一个选择:

unzip:  cannot find or open ./path1/*/*.zip, ./path1/*/*.zip.zip or
./path1/*/*.zip.ZIP.

No zipfiles found.

它只是将其包含在/ path1 / * /中的第一个zip中解压缩,然后返回下一条消息:

unzip -q -o ./path1/*/*.zip Key/* -d /path2/

我需要在路径中使用caution: filename not matched: ./path1/folder/zipFileName1.zip caution: filename not matched: ./path1/folder/zipFileName2.zip caution: filename not matched: ./path1/folder/zipFileName3.zip caution: filename not matched: ./path1/folder/zipFileName4.zip 或类似内容,因为我不知道某个文件夹的名称。

有人能帮帮我吗?谢谢!

2 个答案:

答案 0 :(得分:1)

使用for循环:

$ shopt -s nullglob
$ for f in path1/*.zip path2/*/*.zip ; do [ -r "$f" ] && unzip -l "$f" ; done 

shopt -s nullglob                   # see comments 
for f in path1/*.zip path2/*/*.zip  # all source paths go in here
do 
  [ -r "$f" ] && unzip -l "$f"      # + whatever parameters you need for unzip
done 

答案 1 :(得分:0)

您可以使用find逐个查找zip个文件和unzip个文件:

find ./path1 Key -type f -name "*.zip" -exec unzip -q -o -d /path2 {}

请注意,这会从zippath1的所有子目录中解压缩所有Key个文件。