请问Solaris下如何从tar中解压出某个文件?

rc_hz
请问Solaris下如何从tar中解压出某个文件?

比如,我有一个tar文件:
$ tar -tvf mytest.tar
-rw-r--r-- 1516/102   3275 Jun 10 15:31 2008 h1
-rw-r--r-- 1516/102   3334 Jun 10 15:31 2008 h2
-rw-r--r-- 1516/102   3157 Jun 10 15:31 2008 f1
-rw-r--r-- 1516/102   3216 Jun 10 15:31 2008 f2
-rw-r--r-- 1516/102   3457 Jun 10 15:31 2008 t1
-rw-r--r-- 1516/102   3516 Jun 10 15:31 2008 t2

我想只解压出f2文件,应该用什么命令呢?谢谢!
我已经man tar了,但是还是没有找到答案。

rc_hz
回复 #1 rc_hz 的帖子

Sorry,我知道了: tar -xvf mytest.tar - f2

rc_hz
回复 #2 rc_hz 的帖子

另外一个问题:我想将find得到的文件打包到一个tar文件中,应该怎么写?正常情况下,应该这样:
sunsvr01:/home/crao/tmp$ find . -name "file*"
./file1
./file2
./file3
./file4
./file5
./file6
./file7
./file8
sunsvr01:/home/crao/tmp$ find . -name "file*" | xargs tar -cvf mytest.tar -
tar: -: No such file or directory
a ./file1 4K
a ./file2 4K
a ./file3 4K
a ./file4 4K
a ./file5 4K
a ./file6 4K
a ./file7 4K
a ./file8 4K

但如果列表非常长,那么上面的xargs就有问题了。请问是否有好的方法?

Umysun
[code]tar -xvf mytest.tar f2 [/code]

yuhuohu
回复 #3 rc_hz 的帖子

-bash-3.00$ tar cvf my.tar `find . -name "file*"

douzhua
tar,,,,,,

rc_hz
回复 #5 yuhuohu 的帖子

-bash-3.00$ tar cvf my.tar `find . -name "file*"

这是否会出现命令行超过操作系统的限制的情况呢?比如:find命令最后找出了10000个文件。

dreammaker
[quote]原帖由 [i]rc_hz[/i] 于 2008-6-11 08:40 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8567602&ptid=1155937][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
-bash-3.00$ tar cvf my.tar `find . -name "file*"

这是否会出现命令行超过操作系统的限制的情况呢?比如:find命令最后找出了10000个文件。 [/quote]

yes. This command will fail if too many files are found.
In Linux, the following command can resolve the problem:
# find . -name "file*" -print0 | xargs -0 tar rvf mytest.tar

But in Solaris, you can try this:
# find . -name "file*" -type f -exec tar rvf  mytest.tar '{}' /;

wstar
问题一:tar -xvf mytest.tar f2
问题二:find . -name "file*" -type f -exec tar rvf  mytest.tar '{}' /;