linux压缩命令如何去掉里面的目录层次

tar -cvf tttttt.tar.gz /123/123/123/testtar/*_5_*.txt

得到的压缩包中有/123/123/123/testtar/目录结构

换成
tar -cvf tttttt.tar.gz -C /123/123/123/testtar/*_5_*.txt 说不是目录

第1个回答  推荐于2016-01-23
应该是可以用通配符打包的。但怀疑有bug,比如我打包/home/caicq/111/*.sh文件,但/home/caicq目录有*.sh文件,这时打包就会出错,如果我打包/home/caicq/*.sh文件,上级目录没有*.sh文件,这时就不会出错,看以下。
[caicq@jpdns2 ~]$ ls /home/caicq/111/
a.sh b.sh c.sh
[caicq@jpdns2 ~]$ ls /home/caicq/*.sh
/home/caicq/1.sh /home/caicq/3.sh /home/caicq/home1.sh /home/caicq/test.sh
[caicq@jpdns2 ~]$ sudo tar -cvzf abc.tar.gz -C /home/caicq/111/ *.sh
tar: 1.sh:无法 stat: 没有那个文件或目录
tar: 3.sh:无法 stat: 没有那个文件或目录
tar: home1.sh:无法 stat: 没有那个文件或目录
tar: test.sh:无法 stat: 没有那个文件或目录
tar: 由于前面延迟的错误而退出
[caicq@jpdns2 ~]$ tar --list -zf abc.tar.gz
[caicq@jpdns2 ~]$ sudo tar -cvzf abc.tar.gz -C /home/caicq/ *.sh
1.sh
3.sh
home1.sh
test.sh
[caicq@jpdns2 ~]$ tar --list -zf abc.tar.gz
1.sh
3.sh
home1.sh
test.sh
[caicq@jpdns2 ~]$

-C的作用是切换到指定目录。你 -C /123/123/123/testtar/*_5_*.txt,它就会切换到/123/123/123/testtar/*_5_*.txt这个目录,这当然报错啊。
你应该这样
tar -cvf tttttt.tar.gz -C /123/123/123/testtar/ *_5_*.txt
多个空格就行了,切换到/123/123/123/testtar/,然后再打包*_5_*.txt。本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网