如何将位于不同远程目录中的文件复制到单个本地目录

时间:2014-09-15 16:59:49

标签: bash shell command-line terminal copy

我在远程集群中的主目录下有多个目录,其中包含特定文件。我正在尝试将多个目录中的这些文件远程复制到一个本地目录中。正则表达式

  

scp -r username @ cluster:folderpath / * / file1。

在这种情况下不起作用,因为它会覆盖文件。我该如何复制

  1. 我要么拥有带有迭代后缀的文件(例如file1_1, file1_2)或,
  2. 理想情况下,文件夹名称连接到文件名。
  3. 如果您可以评论如何将此方法扩展到文件扩展名(* .txt,* .out等),也会有所帮助。

1 个答案:

答案 0 :(得分:1)

使用rsync,您可以递归复制只包含您想要的文件:

$ cd /tmp
$ mkdir source1 source2 target
$ touch source1/a source2/a source2/b
$ rsync --include=a --recursive --relative 'localhost:/tmp/source*/a' target
$ ls -R target
target:
tmp

target/tmp:
source1  source2

target/tmp/source1:
a

target/tmp/source2:
a

如果您想在a以下的任何级别加入source*,您可以使用双星号:

$ cd /tmp
$ mkdir source1 source1/subdir source2 target
$ touch source1/a source1/subdir/a source2/a source2/b
$ rsync --include=a --recursive --relative 'localhost:/tmp/source*/a' 'localhost:/tmp/source*/**/a' target
$ ls -R target
target:
tmp

target/tmp:
source1  source2

target/tmp/source1:
a  subdir

target/tmp/source1/subdir:
a

target/tmp/source2:
a