You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何通过SCP批量复制同前缀带日期后缀的文件?

批量复制前缀匹配的远程文件

针对你需要复制远程目录下所有以example开头的文件(排除无关文件和文件夹)的需求,提供两种可靠的实现方式:

方法1:先筛选文件再批量复制(推荐,精准过滤)

这种方式先通过SSH命令在远程端筛选出符合条件的文件,再逐个复制,能确保只复制目标文件,不会误带文件夹。

假设你已经通过paramiko建立了SSH连接,并且初始化了SCPClient实例,代码示例如下:

import paramiko
from scp import SCPClient

# 已有的SSH连接(假设已完成认证)
ssh = paramiko.SSHClient()
# 初始化SCPClient
scp = SCPClient(ssh.get_transport())

# 远程目标文件夹、本地存储文件夹
host_folder = "/path/to/remote/target/"
local_folder = "/path/to/local/destination/"

# 执行远程find命令,筛选当前目录下以example开头的文件(不递归子目录)
stdin, stdout, stderr = ssh.exec_command(
    f'find {host_folder} -maxdepth 1 -type f -name "example*"'
)
# 获取筛选后的文件列表
remote_target_files = stdout.read().decode().splitlines()

# 遍历复制每个文件
for file_path in remote_target_files:
    scp.get(file_path, local_folder)

# 关闭连接
scp.close()
ssh.close()

命令说明

  • find {host_folder}:指定远程搜索目录
  • -maxdepth 1:限制仅搜索当前目录,不递归子文件夹
  • -type f:仅匹配文件,排除文件夹
  • -name "example*":匹配所有以example开头的文件名(兼容带点和不带点的后缀格式,比如example.0411、example0324)

方法2:直接用通配符批量复制(简便但需注意过滤)

如果远程端的shell支持通配符解析,可以直接通过scp.get传递带通配符的路径,一步完成复制:

scp.get(f"{host_folder}example*", local_folder)

注意事项

  • 若远程目录下存在以example开头的文件夹,这种方式会连同文件夹一起复制,若需避免则优先用方法1
  • 如果远程文件夹路径包含空格,需用引号包裹路径:
    scp.get(f'"{host_folder}example*"', local_folder)
    

内容的提问来源于stack exchange,提问作者martinmistere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 09:32:52