有多种方法:

  1. sudo unzip \*.zip
  2. sudo unzip "*.zip"
  3. ls *.zip |sudo xargs -n1 unzip
  4. for z in *.zip; do unzip $z; done

unzip *.zip命令之所以会报错。是因为该命令相当于unzip a.zip b.zip c.zip, 其中a.zip, b.zip, c.zip是当前目录中的zip文件。两个命令的报错都是一样的,是指进入a.zip,对a中的b.zip c.zip进行解压。而实际上b.zip和c.zip和a.zip在同一个目录下,所以会报错找不到。之所以ls *.zip能运行成功,而unzip *.zip报错的原因与两个命令的参数格式有关。ls命令后面可以跟多个文件名,而unzip不行,unzip的第2个参数表示在第一个参数指定的zip归档中找。

[How do I unzip multiple / many files under Linux?][1] [1]:https://www.cyberciti.biz/faq/linux-unix-shell-unzipping-many-zip-files/