【问题标题】:Unix unzip: how to batch unzip zip files in a folder and save in subfolders?Unix解压缩:如何批量解压缩文件夹中的zip文件并保存在子文件夹中?
【发布时间】:2012-08-03 23:12:05
【问题描述】:

假设我有一个文件夹“images”,其中有 0001.zip 到 9999.zip,我想将它们全部解压缩并将它们保存在具有其文件名的子文件夹中,例如,0001.zip 将解压保存到/0001,0002.zip会解压保存到/0002,我试过了

unzip '*.zip'

但这会提取当前文件夹中的所有文件。

【问题讨论】:

    标签: linux unix zip unzip


    【解决方案1】:

    你可以这样做:

     for file in *.zip; do
           dir=$(basename "$file" .zip) # remove the .zip from the filename
           mkdir "$dir"
           cd "$dir" && unzip ../"$file" && rm ../"$file" # unzip and remove file if successful
           cd ..
      done
    

    或者,在一行上一起运行:

      for file in *.zip; do dir=$(basename "$file" .zip); mkdir "$dir"; cd "$dir"; unzip ../"$file" && rm ../"$file"; cd ..; done
    

    如果您需要/想要保留原始 .zip 文件,只需删除 && rm ../"$file" 位。

    【讨论】:

      【解决方案2】:
      for zip in *.zip
      do
          unzip "$zip" -d "${zip%.zip}"
      done
      

      【讨论】: