Unix unzip:如何批量解压ZIP文件到一个文件夹并保存在子文件夹中?

问题描述:

说如果我有一个文件夹'图像',里面有0001.zip到9999.zip,我想将它们全部解压缩并保存在具有文件名的子文件夹中,例如,0001.zip将会是解压缩并保存到/ 0001,0002.zip将解压缩并保存到/ 0002,我试着做Unix unzip:如何批量解压ZIP文件到一个文件夹并保存在子文件夹中?

unzip '*.zip' 

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

你可以做这样的事情:

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"位。

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