首页 > 解决方案 > 复制树结构,包括叶子中的单个文件

问题描述

在集群上运行了几次模拟后,我想将结果复制回我的本地机器。结果整理如下:

foo1
   |bar1
       |run1
           |file1.txt
           |file2.txt
           |results.txt
       |run2
           |file1.txt
           |file2.txt
           |results.txt
   |bar2
       |run1
           |file1.txt
           |file2.txt
           |results.txt
       |run2
           |file1.txt
           |file2.txt
           |results.txt
foo2
... (etc.)

每个run*文件夹都包含几个文件,需要运行模拟,但我只对复制结果感兴趣,比如results.txt回到我的本地机器,同时保持树结构的其余部分(目录基本上指定了模拟的参数)。

我现在如何只将results.txt文件从远程复制到本地,同时保持目录的树结构?这样我在本地最终得到

foo1
   |bar1
       |run1
           |results.txt
       |run2
           |results.txt
   |bar2
       |run1
           |results.txt
       |run2
           |results.txt
foo2
... (etc.)

标签: bash

解决方案


使用 find 和 tar:

find -name result.txt | tar cvfz results.tgz -T -

然后你需要复制 tar 并解压它:

tar xvfz results.tgz

推荐阅读