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,提取文件。(但會生成新的目錄,所以切換至路徑也沒什么意義)
總結
以上是生活随笔為你收集整理的linux tar.gz指定目录,tar.gz包内提取某个文件在指定目录下。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宪法以法律的形式确认了中国各族人民奋斗的
- 下一篇: linux 其他常用命令