解压缩ZIP文件并提取未知文件夹名称的内容

sil*_*npi 6 bash zip unzip

我的用户将会压缩文件,如下所示:

TEMPLATE1.ZIP
   |--------- UnknownName
                   |------- index.html
                   |------- images
                               |------- image1.jpg
Run Code Online (Sandbox Code Playgroud)

我想解压缩这个zip文件如下:

/mysite/user_uploaded_templates/myrandomname/index.html
/mysite/user_uploaded_templates/myrandomname/images/image1.jpg
Run Code Online (Sandbox Code Playgroud)

我的麻烦是UnknownName - 我事先不知道它是什么,并将所有内容提取到"base"级别会破坏index.html中的所有相对路径

如何从此ZIP文件中提取UnknownName 的内容

还有什么比:

1. Extract everything
2. Detect which "new subdidrectory" got created
3. mv newsubdir/* .
4. rmdir newsubdir/
Run Code Online (Sandbox Code Playgroud)

如果UnknownName级别有多个子目录,我可以拒绝该用户的zip文件.

Pau*_*ce. 7

我认为你的方法很好.步骤2可以改进我提取到新创建的目录(后来删除),以便"检测"是微不足道的.

# Bash (minimally tested)
tempdest=$(mktemp -d)
unzip -d "$tempdest" TEMPLATE1.ZIP
dir=("$tempdest"/*)
if (( ${#dir[@]} == 1 )) && [[ -d $dir ]]
    # in Bash, etc., scalar $var is the same as ${var[0]}
    mv "$dir"/* /mysite/user_uploaded_templates/myrandomname
else
    echo "rejected"
fi
rm -rf "$tempdest"
Run Code Online (Sandbox Code Playgroud)