我正在创建一个下载 mongo c 驱动程序的脚本:
wget -O mongo.tar.gz https://... \
&& tar -xzvf mongo.tar.gz \
&& cd mongo \
&& ...
但是它在这一cd mongo
部分失败了,因为我解压 tar 时的实际文件夹名称是mongo-c-driver-1.7.0
。我不能依赖这个名字。如何在不知道名称看起来如何的情况下修改它?
答案1
你可以应用 sed 命令来转换名字。来自man tar
--transform, --xform EXPRESSION
use sed replace EXPRESSION to transform file names
所以:
wget -O - https://... |
tar -xzv --transform 's:^[^/]*:mongo:'
s:^[^/]*:mongo:
将第一个之前的所有内容替换/
为mongo
。您可以将文件直接传输到tar
(因此我-O -
在 wget 中使用,并-f
在 tar 中删除了该选项)。
或者,您可以修剪第一个组件并提取到您选择的目录:
mkdir -p mongo && wget -O - https://... |
tar -xzv --strip-components=1 -C mongo
在哪里:
--strip-components=NUMBER
strip NUMBER leading components from file names on extraction
-C, --directory DIR
change to directory DIR