通配符的问题请大家帮忙看看

兄弟问我一个脚本问题,说循环脚本总是报错。
后来按照他的思路手工在终端执行也报错了。
他的目的是在a*.tgz压缩包里解压t*系列的文件,每个压缩包里t打头的文件夹名都不一样。
解压第一个压缩包用t*提取正常,解压第2个压缩包用t*提取时居然还是前面压缩包里的t1和t2目录,有点怪异,为什么不是t3和t4呢?哪位清楚请帮忙答疑下。

[root@t1 tmp]# tar ztvf a1.tgz
drwxr-xr-x root/root         0 2011-05-30 11:09:00 t1/
-rw-r--r-- root/root     10400 2011-05-30 11:09:00 t1/test1
drwxr-xr-x root/root         0 2011-05-30 11:09:01 t2/
-rw-r--r-- root/root     10400 2011-05-30 11:09:01 t2/test1
drwxr-xr-x root/root         0 2011-05-30 11:09:01 b1/
-rw-r--r-- root/root     10400 2011-05-30 11:09:01 b1/test1

[root@t1 tmp]# tar ztvf a2.tgz
drwxr-xr-x root/root         0 2011-05-30 11:09:02 t3/
-rw-r--r-- root/root     10400 2011-05-30 11:09:02 t3/test1
drwxr-xr-x root/root         0 2011-05-30 11:09:03 t4/
-rw-r--r-- root/root     10400 2011-05-30 11:09:03 t4/test1
drwxr-xr-x root/root         0 2011-05-30 11:09:01 b2/
-rw-r--r-- root/root     10400 2011-05-30 11:09:01 b2/test1

[root@t1 tmp]# tar ztvf a
[root@t1 tmp]# tar zxvf a1.tgz t*
t1/
t1/test1
t2/
t2/test1
[root@t1 tmp]# tar zxvf a2.tgz t*
tar: t1:归档中找不到
tar: t2:归档中找不到
tar: 由于前面延迟的错误而退出

作者: 剑次狼   发布时间: 2011-05-30

回复 剑次狼


    tar 用法不对吧

作者: wtuter   发布时间: 2011-05-30

tar zxvf a2.tgz t*
经shell解释后实际运行的是
tar zxvf a2.tgz t1 t2     #因为t1 t2的存在,t*被解释成t1 t2

作者: ywlscpl   发布时间: 2011-05-30

楼上正解~

作者: shplpy   发布时间: 2011-05-30



QUOTE:
tar zxvf a2.tgz t*
经shell解释后实际运行的是
tar zxvf a2.tgz t1 t2     #因为t1 t2的存在,t*被解释成 ...
ywlscpl 发表于 2011-05-30 12:27




    哦。明白了,因为解压a1的包已经释放了t1和t2目录,自然解压a2时的读取目录通配出t1和t2。原来如此,
解压完mv走了话在解压就不会出现这个问题了哦
被兄弟给绕迷糊了,惭愧惭愧,谢谢白云兄的提醒。


QUOTE:
[root@t1 tt2]# tar zxvf a3.tgz t*
t5/
t5/test1
t6/
t6/test1
[root@t1 tt2]# ls
a3.tgz  a4.tgz  t5  t6
[root@t1 tt2]# mkdir 444
[root@t1 tt2]# mv t* 444/
[root@t1 tt2]# ls
444  a3.tgz  a4.tgz
[root@t1 tt2]# tar zxvf a4.tgz t*
t7/
t7/test1
t8/
t8/test1
t9/
t9/test1
ttt.sh

作者: 剑次狼   发布时间: 2011-05-30