linux tar.gz指定目录,tar.gz包内提取某个文件在指定目录下。

想试试不解压从tar.gz包内提取某个文件到指定目录下,百度来的全是一个模板,没有示例,根本莫名其妙。经自己测试才算明白。

百度来的方法

tar包

tar tvf yourtarfile |grep fileyouwant,

tar xvf yourtarfile fileyouwant(copy上面的全路径用绝对路径)

tar.gz包

tar ztvf yourtargzfile |grep fileyouwant,

tar zxvf yourtarfile fileyouwant(copy上面的全路径用绝对路径)

思路就是先查出文件路径,再解压。但是上面的“全路径用绝对路径”是个什么鬼,经过折腾才算明白。先看操作过程。

[root@fengzw test]# pwd

/root/test

[root@fengzw test]# ls

mariadb-10.4.12.tar.gz

[root@fengzw test]# tar -tzvf mariadb-10.4.12.tar.gz | grep CMakeLists.txt

.....

-rw-rw-r-- buildbot/buildbot 17932 2020-01-27 04:43 mariadb-10.4.12/CMakeLists.txt

......

[root@fengzw test]# tar -zxvf mariadb-10.4.12.tar.gz mariadb-10.4.12/CMakeLists.txt -C ../

mariadb-10.4.12/CMakeLists.txt

[root@fengzw test]# cd ..

[root@fengzw ~]# ls

anaconda-ks.cfg CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-Vault.repo test tools

[root@fengzw ~]# ls test/

mariadb-10.4.12 mariadb-10.4.12.tar.gz

[root@fengzw ~]# ls test/mariadb-10.4.12

CMakeLists.txt

切换个目录运行测试:

[root@fengzw ~]# ls test/

mariadb-10.4.12.tar.gz

[root@fengzw ~]# ls tools/testtar/

[root@fengzw ~]# tar -zxvf test/mariadb-10.4.12.tar.gz mariadb-10.4.12/CMakeLists.txt -C tools/testtar/

mariadb-10.4.12/CMakeLists.txt

[root@fengzw ~]# ls tools/testtar/

[root@fengzw ~]# ls test

mariadb-10.4.12.tar.gz

[root@fengzw ~]# ls

anaconda-ks.cfg CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-Vault.repo mariadb-10.4.12 test tools

[root@fengzw ~]# ls mariadb-10.4.12/

CMakeLists.txt

由以上可知:

所谓的绝对路径,就是通过tvf查出来的路径,即从tar包名开始,而不是系统级别的绝对路径。这就是所谓"全路径"的概念。

如果是提取某个文件,-C指定存放位置不生效!!!

只能默认的提取至运行tar解压时当前所在系统路径下,而不是原压缩包所在路径。

会生成从tar包名开始的目录,按压缩包内路径存放提取出来的文件。

使用步骤总结:a,切换路径至需要存储提取文件的位置;b,查找列出所要提取文件的路径;c,提取文件。(但会生成新的目录,所以切换至路径也没什么意义)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值