我正在try 使用PHP在SFTP服务器上查找特定文件.文件 list 非常大,所以如果可能的话,我希望使用通配符来过滤结果,而不是迭代每个文件.

当我使用psftp或者甚至是默认的Windows命令行sftp命令时,我能够使用类似于ls prefix_*.txt之类的东西来过滤结果,并且正如预期的那样,返回的文件将按照我使用的文件掩码进行过滤.

然而,phpseclib3\net\sftp似乎没有ls命令,只有nlistrawlist.这两种方法都提供了排序选项,但似乎不支持通配符.

我也try 了一下,认为SSH命令可能会起作用: $sftp->exec('ls');,但服务器退出,并显示"此服务仅允许sftp连接".

所以我的问题是,在PHP中这是否可能,或者我只需要接受这样一个事实:每次我想要过滤所有返回的文件时,我都必须遍历这些文件.如果是这样的话,其他工具中的ls命令是如何工作的呢?过滤是否在psftp和windows sftp应用程序中进行本地处理(即它们仍需要在后台检索完整的目录列表)?

推荐答案

sftppsftp中的过滤是在本地完成的.在SFTP协议中,没有API来进行服务器端的过滤.

Phpseclib没有实现本地端过滤.你确实必须靠自己来做这件事.

Php相关问答推荐

如何在WordPress中为特定自定义帖子类型自定义URL struct

在php中有没有办法比较两个包含相同枚举类型的枚举数组

有什么方法可以阻止WordPress主题升级通知吗?

PHP空数组定义与开始或结束逗号

通过访问单个产品页面更新WooCommerce产品元数据

从目录文件夹中获取文件并追加到 Select 下拉列表(选项)-wordpress/wc

在个人资料页面上显示个人资料图像

即使在WooCommerce购物车中添加了两次产品,也要将所有项目设置为空白行

扩展 WooCommerce 类触发未捕获错误:未找到WC_Coupon类

有没有办法像引用枚举一样引用注册表中的对象?

使用 Composer 找不到 Google APIClient 类

避免在 WooCommerce 中多次触发挂钩函数

Woocommerce注册中的自定义复选框验证错误提示问题

Woocommerce单个添加到购物车页面中的产品动态定价

如何设置Mailersend PHP API 模板变量?

WooCommerce单个产品页面上启用额外选项卡的产品元框字段

PHP删除具有相同键的项目,除了具有最低值的项目

WooCommerce 按 ID 限制产品

为什么可以从 PHP 类访问 PHP Trait 的私有成员?

Laravel 响应 html 默认页面忽略控制器