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

如何在R语言中列出SSH目录下的文件?

通过SSH获取远程目录文件列表并读取未知文件

完全可以实现类似list.files()的远程目录文件列表查询,下面提供两种实用方法:

方法一:用pipe直接调用SSH执行ls命令

借助系统的SSH命令,通过管道把远程ls的结果读入R,就能得到远程目录的文件列表:

# 替换成你的SSH账号和目标远程目录
ssh_list_cmd <- "ssh your_username@remote_server_ip 'ls /your/remote/directory'"
remote_file_list <- readLines(pipe(ssh_list_cmd))

# remote_file_list就是远程目录下的文件名向量,用法和list.files()返回的结果一致
print(remote_file_list)

如果需要获取带权限、大小等详细信息的文件列表,把命令换成ls -l即可,后续可以用字符串处理函数按需提取信息。

方法二:用ssh包更便捷地管理远程操作(推荐)

如果经常和远程服务器交互,专门的ssh包会更省心,功能也更全面:

  1. 先安装并加载包:
install.packages("ssh")
library(ssh)
  1. 建立SSH连接(支持密码或密钥认证):
ssh_session <- ssh_connect("your_username@remote_server_ip")
  1. 执行远程ls命令获取文件列表:
# 执行命令并获取结果
list_result <- ssh_exec_internal(ssh_session, command = "ls /your/remote/directory")
# 把二进制输出转成字符向量,拆分每行得到文件名
remote_file_list <- strsplit(rawToChar(list_result$stdout), "\n")[[1]]
# 过滤掉可能存在的空行
remote_file_list <- remote_file_list[nzchar(remote_file_list)]

print(remote_file_list)
  1. 遍历读取所有文件(以CSV文件为例):
    拿到文件列表后,就可以循环读取每个文件进行处理:
for(file_name in remote_file_list) {
  remote_file_path <- paste0("/your/remote/directory/", file_name)
  # 读取远程文件内容
  file_content <- readLines(pipe(paste0("ssh your_username@remote_server_ip 'cat ", remote_file_path, "'")))
  # 转成数据框
  data_df <- read.csv(text = file_content)
  # 这里写你的数据处理逻辑...
}
  1. 操作完成后记得关闭连接:
ssh_disconnect(ssh_session)

一些注意点

  • 如果不想每次输入密码,建议配置SSH密钥免密登录;
  • 远程目录路径如果包含空格,要给路径加单引号,比如'/path/with spaces';
  • 不同服务器的ls输出格式可能略有差异,提取文件名时可能需要微调字符串处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 22:57:22