我正在尝试使用一个(管道)命令下载一个tar.gz
包wget
、解压缩它并重命名解压后的目录。
我的尝试是:
wget -O- $URL | tar fvxz - -C $DEST
wget -O- $URL | tar fvxz - | mv - $DEST
我在什么方面失败了?
答案1
如果您有 BSD 或 GNU tar,您可以执行以下操作:
mkdir -p "$DEST" && wget -O- "$URL" | tar --strip-components 1 -xvzf- -C "$DEST"
因为 GNU tar 有--strip-components
,但这不是标准解决方案。无论如何,您无法真正使用单个管道来执行此操作,因为您必须已经拥有目录,并且如果您愿意放弃整个单个管道,那么有很多很好的方法可以做到这一点。
mkdir -p "$DEST" &&
cd "$DEST" &&
wget -O- "$URL" | tar -xvzf-
cd * && # Assumes the result only has one directory
mv * .. # Assumes no dotfiles
如果有必要,您可以通过调整此答案来解决多个目录的点文件和 tar 问题。