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

如何使用SSH.NET在Ubuntu机器上列出目录?

SFTP 目录列表实现方案

嘿,刚好你已经有了文件列表的基础代码,只需要对返回的SftpFile集合做个简单过滤就能拿到目录列表啦!

核心思路

SftpClient.ListDirectory()返回的每个SftpFile对象都自带IsDirectory属性,通过这个属性就能判断当前项是不是目录。另外通常我们会排除掉默认的.(当前目录)和..(上级目录)这两个条目,避免返回无用内容。

实现代码

public IEnumerable<string> GetDirectories(string path) 
{ 
    using (var sftpClient = new SftpClient(_host, _port, _username, _password)) 
    { 
        sftpClient.Connect(); 
        var directoryItems = sftpClient.ListDirectory(path); 
        // 筛选出真正的目录,排除.和..
        return directoryItems.Where(item => item.IsDirectory && !item.Name.Equals(".") && !item.Name.Equals(".."))
                            .Select(item => item.Name); 
    } 
}

补充说明

如果你想一次性获取指定路径下的所有文件和目录(并区分类型),也可以扩展一个方法返回包含类型信息的结构,但针对你现在的需求,上面的方法完全够用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:52:24