大多数 tar 软件版本确实包含一个包含版本的目录,例如product-1.2.3
,我正在寻找一个简单的 bash 解决方案来将此类存档解压缩到不包含该版本的目录。
请注意,tar 存档名称与其中包含的目录不同。
显然,一种方法是在之后重命名它,但为了做到这一点,您需要知道原始目录名称是什么。
这里有两个有用的选项:
File name transformations:
--strip-components=NUMBER
strip NUMBER leading components from file names on extraction
Common options:
-C, --directory=DIR
change to directory DIR
例如
[user@host tmp]$ mkdir test-0.0.2
[user@host tmp]$ echo Hello > test-0.0.2/README
[user@host tmp]$ tar zvcf mytarball.tgz test-0.0.2
test-0.0.2/
test-0.0.2/README
[user@host tmp]$ mkdir targetdir
[user@host tmp]$ tar zxvf mytarball.tgz --strip-components=1 -C targetdir
test-0.0.2/README
[user@host tmp]$ ls targetdir/
README
[user@host tmp]$