Unix解压缩:如何批量解压缩文件夹中的zip文件并保存在子文件夹中?

3
假如我有一个文件夹 'images',里面有0001.zip到9999.zip,在保留它们的文件名的情况下,我想解压缩所有这些文件,并将它们保存在以它们的文件名命名的子文件夹中,例如,0001.zip 将被解压缩并保存到 /0001, 0002.zip 将被解压缩并保存到 /0002, 我尝试运行以下代码:
unzip '*.zip'

但是这会提取当前文件夹中的所有文件。
2个回答

7
你可以像这样做:
 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"这一部分。

4
for zip in *.zip
do
    unzip "$zip" -d "${zip%.zip}"
done

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接