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。本回答被提问者采纳
[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。本回答被提问者采纳