【问题标题】:Copy tree structure including single file in leaf复制树结构,包括叶子中的单个文件
【发布时间】:2018-06-07 11:27:15
【问题描述】:

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

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.)

【问题讨论】:

  • 你的问题是如何从远程复制到本地?或者如何只从远程复制那些文件?
  • @Inian,如何仅将results.txt 文件从远程复制到本地,同时保持目录的树形结构。我还在问题中包含了想要的结果的草图
  • 我认为答案是herehere
  • @oliv,不完全。第一个链接想排除其他文件夹,我没有。第二个链接想要复制保持树结构的所有内容,而我只对复制单个文件感兴趣。另一方面,我承认解决方案非常相似

标签: bash


【解决方案1】:

使用 find 和 tar:

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

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

tar xvfz results.tgz

【讨论】:

    【解决方案2】:

    您可以分两个阶段完成此操作:

    find . -type f -name results.txt | xargs tar -f results.tar
    

    这会找到所有名为 results.txt 的文件 (-type f),然后将结果通过管道传输到一个压缩包中。

    第二阶段是将scp从集群返回到您的本地机器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      • 2017-08-04
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多