我正在try 使用PHP在SFTP服务器上查找特定文件.文件 list 非常大,所以如果可能的话,我希望使用通配符来过滤结果,而不是迭代每个文件.
当我使用psftp或者甚至是默认的Windows命令行sftp命令时,我能够使用类似于ls prefix_*.txt
之类的东西来过滤结果,并且正如预期的那样,返回的文件将按照我使用的文件掩码进行过滤.
然而,phpseclib3\net\sftp似乎没有ls
命令,只有nlist
和rawlist
.这两种方法都提供了排序选项,但似乎不支持通配符.
我也try 了一下,认为SSH命令可能会起作用:
$sftp->exec('ls');
,但服务器退出,并显示"此服务仅允许sftp连接".
所以我的问题是,在PHP中这是否可能,或者我只需要接受这样一个事实:每次我想要过滤所有返回的文件时,我都必须遍历这些文件.如果是这样的话,其他工具中的ls
命令是如何工作的呢?过滤是否在psftp和windows sftp应用程序中进行本地处理(即它们仍需要在后台检索完整的目录列表)?