我下载了一个 tarball( abc.tar.gz
),它有一个根文件夹( abc
) 和多个子文件夹( a
, b
,c
等)。我Target
在机器(macbook pro) 中有一个名为的文件夹,它也有多个子文件夹( a
, b
,c
等)。
现在我想将 tarball 解压到Target
文件夹并自动合并子文件夹。我该如何实现?我尝试将其解压,Target
但结果出现了一个子文件夹(abc
)Target
:
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' 的文件夹同时存在于 和 中,则abc
的Target
内容abc/foo
将被复制到Target/foo
。但请注意,在文件级别,abc/foo/bar.txt
将Target/foo/bar.txt
在没有通知或警告的情况下进行覆盖。