文件名如下所示,但是当目录为时tar xvf v0.21.1.tar.gz
,目录为libgit2-0.21-1 ,因此如何使用单线获取目录名(如果存在两个以上目录,则会报告错误):
tar tvf v0.21.1.tar.gz | head
drwxrwxr-x root/root 0 2014-08-05 08:09 libgit2-0.21.1/
-rw-rw-r-- root/root 1169 2014-08-05 08:09 libgit2-0.21.1/.HEADER
-rw-rw-r-- root/root 22 2014-08-05 08:09 libgit2-0.21.1/.gitattributes
-rw-rw-r-- root/root 321 2014-08-05 08:09 libgit2-0.21.1/.gitignore
-rw-rw-r-- root/root 1246 2014-08-05 08:09 libgit2-0.21.1/.mailmap
我对此有一个解决方案,但显然这不是最好的解决方案(我还必须检查顶部是否有多个目录):
mkdir libgit2 && tar xvf v0.21.1.tar.gz -C libgit2 --strip-components 1
使用tarball作为命令行参数执行以下脚本
#!/bin/bash
DIR=$(tar tvf ${1} | egrep -o "[^ ]+/$")
if [ $(echo ${DIR} | egrep -o " " | wc -l) -eq 0 ]; then
echo ${DIR};
else
echo "ERROR: multiple directories in tarball base"
exit 1
fi
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句