如何从远程服务器复制所有 *.xls 文件到不同目录?

How can I copy all *.xls files from a remote server, within different directories?

远程服务器在不同的目录深度中保存了大量文件。我想从服务器上提取所有这些 *.xls 文件并将其复制到我的本地桌面。

我可以使用以下方法找到所有文件:

find . -name '*.xls'

这正确地生成了一个列表,其中包含我需要的所有文件名的文件路径。

我也知道可能需要使用 scp,我可以对单个文件执行此操作:

scp user@server:path/path/path.../file.xls /Desktop

我试过:

find . -name '*.xls' -exec cp --parents \{\} /Desktop \; 

但是这样不行,因为是从远程目录到本地。

我需要保留指向文件的文件路径,以便目录结构保持不变。

希望我的问题够清楚,我是新手,谢谢。

我目前有:

rsync -a --prune-empty-dirs --include '*ping.xls' --exclude '*pattern*' --exclude '*pattern2*' --exclude '*pattern3*' --exclude '...and_so_on*' ./remote_server ./Local_Desktop

有没有更优雅的方法来排除除包含模式中的内容之外的所有内容?目前它只是 rsync-ing 一切。

改为使用 rsync。不要设置 rsync,而是在需要时手动调用它。给src机器的顶层文件夹,给文件模式。

例如。 rsync -a --include=*.xls me@srcmachine:/opt/topfolder /tmp

已尝试:

rsync -a --prune-empty-dirs --include */ --include '*ping.xls' --exclude '*' ./server ./target

以及许多其他组合,我发现了这些的重要性: ''

适用于:

rsync -a --prune-empty-dirs --include '*/' --include '*ping.xls' --exclude '*' ./server ./target/