使用 Linux shell 将 ZIP 转换为 TAR

问题

你有 ZIP 归档,想自动将其转换为 TAR 同时保留原始目录结构。

解决方案

使用此脚本(注释内联)。

ziptotar.sh
#!/bin/bash
# 用法:ziptotar.sh <ZIP 名称>
tmpdir=`mktemp -d`
#将 zip 复制到临时目录
cp "$1" $tmpdir/
#解压
(cd $tmpdir && unzip -q "$1")
#移除原始 zip 文件因为我们不想将其打包
rm "$tmpdir/$1"
#打包文件
outfilename=$(echo "$1" | rev | cut -d. -f2- | rev).tar
(cd $tmpdir && tar cf "$outfilename" *)
mv "$tmpdir/$outfilename" .
#移除临时目录
rm -rf $tmpdir
#打印我们做了什么
echo "Converted $1 to $outfilename"

Check out similar posts by category: Shell