tarballing只匹配模式的目录

时间:2013-11-05 20:20:40

标签: unix archive tar

我有一个父目录,其中有许多子文件夹,每个子文件夹中都有一个名为“start”的目录。我想以某种方式从父目录中创建一个tarball,并让它只包含名为“start”的目录,但是要维护父目录子结构。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

假设Bash,您可以使用扩展通配符仅选择所需的子目录。

例子:让我们创建一个虚拟目录层次结构

$ mkdir -p test/{top,bottom}/{start,finish}/{one,two}
$ find test
test
test/bottom
test/bottom/finish
test/bottom/finish/one
test/bottom/finish/two
test/bottom/start
test/bottom/start/one
test/bottom/start/two
test/top
test/top/finish
test/top/finish/one
test/top/finish/two
test/top/start
test/top/start/one
test/top/start/two

现在,要创建仅包含目录start及其内容的tar存档:

$ tar cvf test.tar test/**/start
a test/bottom/start
a test/bottom/start/one
a test/bottom/start/two
a test/top/start
a test/top/start/one
a test/top/start/two
$ 

请注意,必须启用扩展通配符才能使用此解决方案。

$ shopt extglob
extglob         on

如果未启用,请使用

$ shopt -s extglob