解压 tarball 时如何合并文件?

解压 tarball 时如何合并文件?

我下载了一个 tarball( abc.tar.gz),它有一个根文件夹( abc) 和多个子文件夹( a, b,c等)。我Target在机器(macbook pro) 中有一个名为的文件夹,它也有多个子文件夹( a, b,c等)。
现在我想将 tarball 解压到Target文件夹并自动合并子文件夹。我该如何实现?我尝试将其解压,Target但结果出现了一个子文件夹(abcTarget

cp abc.tar.gz ~/Target
cd ~/Target
tar xzvf abc.tar.gz

结果:

Target/abc/a
Target/abc/b
Target/a
Target/b

我想要的是:

Target/a    # auto merged
Target/b    # auto merged

提前致谢!

答案1

不幸的是,tar即使您仅请求子文件夹路径内的单个资源,也始终会解压完整的存档路径。例如:

$ tar -x abc/a -zvf abc.tar.gz 

将仅解压子文件夹A但它的父目录美国广播公司仍将被创建。

从目标目录中你可以执行

$ for d in `ls abc`; do cp -rf abc/$d/* ./$d/; done

将存档文件夹复制到当前文件夹中预先存在的同名文件夹中Target

或者简单地

$ cp -rf abc/* ./

在 中创建所有存档文件夹~/Target。如果名为 'foo' 的文件夹同时存在于 和 中,则abcTarget内容abc/foo将被复制到Target/foo。但请注意,在文件级别,abc/foo/bar.txtTarget/foo/bar.txt在没有通知或警告的情况下进行覆盖。

相关内容