func main() {
f, err := os.Open("1.tar")
if err != nil {
panic(err)
}
tr := tar.NewReader(f)
tr, err = getFileFromTar(tr, "2.tar")
if err != nil {
panic(err)
}
tr2 := tar.NewReader(tr)
target, err := getFileFromTar(tr2, "4")
if err != nil {
panic(err)
}
if _, err = io.Copy(os.Stdout, target); err != nil {
panic(err)
}
}
func getFileFromTar(tr *tar.Reader, fname string) (*tar.Reader, error) {
for {
hdr, err := tr.Next()
if err != nil {
return nil, err
}
if hdr.Name == fname {
return tr, nil
}
}
}