带有文件掩码的 WinSCP ls 命令正在记录所有文件

WinSCP ls command with file mask is logging all files

我正在尝试通过 WinSCP 脚本执行一个简单的 ls。 FTP上有很多文件(格式TOE#####.###,其中#是数字),我只想要文件夹[=]中以TOE54281开头的文件13=].

我试过ls TOEFL/TOE54281*ls TOEFL/TOE54281*.???ls TOEFL/*54281*(和其他替代方案),但都给我所有的文件内容,而不仅仅是以我需要的开头的内容.

有什么建议吗?

2015-01-23 13:23:43.878 Script: ls TOEFL/TOE52481*
. 2015-01-23 13:23:43.878 Listing directory "/TOEFL".
2015-01-23 13:23:43.878 Type: SSH_FXP_OPENDIR, Size: 15, Number: 267
< 2015-01-23 13:23:43.910 Type: SSH_FXP_HANDLE, Size: 13, Number: 267
2015-01-23 13:23:43.910 Type: SSH_FXP_READDIR, Size: 13, Number: 524
...
< 2015-01-23 13:23:50.618 Type: SSH_FXP_STATUS, Size: 28, Number: 58892
< 2015-01-23 13:23:50.618 Status code: 1
2015-01-23 13:23:50.618 Type: SSH_FXP_CLOSE, Size: 13, Number: 59140
. 2015-01-23 13:23:50.634 .;d;603136;2015-01-23T16:41:21.000Z;"4433" [4433];"15002" [15002];rwxr-xr-x;2
. 2015-01-23 13:23:50.634 ..;d;1024;2014-12-06T13:26:58.000Z;"0" [0];"0" [0];rwxr-xr-x;0
. 2015-01-23 13:23:50.634 TOE58183.TST;-;1493;2014-11-18T16:20:02.000Z;"4433" [4433];"4433" [4433];rw-rw-r--;0
. 2015-01-23 13:23:50.634 TOR84390.099;-;5409;2014-10-09T14:12:15.000Z;"4433" [4433];"4433" [4433];rw-rw-r--;0
. 2015-01-23 13:23:50.634 TOE84390.TST;-;3792;2014-10-06T20:31:30.000Z;"4433" [4433];"4433" [4433];rw-rw-r--;0
. 2015-01-23 13:23:50.634 TOE50072.TST;-;3792;2014-10-06T20:37:39.000Z;"4433" [4433];"4433" [4433];rw-rw-r--;0
...
. 2015-01-23 13:24:07.389 TOE98410.023;-;819;2014-12-05T16:16:27.000Z;"4433" [4433];"4433" [4433];rw-rw-r--;0
. 2015-01-23 13:24:07.389 TOE98600.023;-;1769;2014-12-05T16:16:28.000Z;"4433" [4433];"4433" [4433];rw-rw-r--;0
. 2015-01-23 13:24:07.389 TOE99430.023;-;998244;2014-12-05T16:16:28.000Z;"4433" [4433];"4433" [4433];rw-rw-r--;0
. 2015-01-23 13:24:07.389 TOE99640.023;-;3756;2014-12-05T16:16:29.000Z;"4433" [4433];"4433" [4433];rw-rw-r--;0
. 2015-01-23 13:24:07.389 TOE99881.023;-;3890;2014-12-05T16:16:29.000Z;"4433" [4433];"4433" [4433];rw-rw-r--;0
< 2015-01-23 13:24:07.545 Script: -rw-rw-r-- 1 4433 4433 415685 Oct 10 11:55:26 2014 TOE52481.015
< 2015-01-23 13:24:07.545 Script: -rw-rw-r-- 1 4433 4433 393699 Oct 17 9:39:41 2014 TOE52481.016
< 2015-01-23 13:24:07.545 Script: -rw-rw-r-- 1 4433 4433 402250 Sep 26 10:13:23 2014 TOE52481.013
< 2015-01-23 13:24:07.545 Script: -rw-rw-r-- 1 4433 4433 559835 Oct 24 10:28:07 2014 TOE52481.017
< 2015-01-23 13:24:07.545 Script: -rw-rw-r-- 1 4433 4433 605034 Oct 31 11:24:01 2014 TOE52481.018

你的前两个掩码是正确的:

winscp> ls TOEFL
D---------   0                           0              ..
-rw-r--r--   0 user1    users           10 Jan 23 17:58:07 2015 TOE99999.222
-rw-r--r--   0 user1    users           10 Jan 23 17:58:07 2015 TOE54281.111
-rw-r--r--   0 user1    users           10 Jan 23 17:58:07 2015 TOE54281.222
-rw-r--r--   0 user1    users           10 Jan 23 17:58:07 2015 TOE99999.111
winscp> ls TOEFL/TOE54281*
-rw-r--r--   0 user1    users           10 Jan 23 17:58:07 2015 TOE54281.111
-rw-r--r--   0 user1    users           10 Jan 23 17:58:07 2015 TOE54281.222
winscp> ls TOEFL/TOE54281*.???
-rw-r--r--   0 user1    users           10 Jan 23 17:58:07 2015 TOE54281.111
-rw-r--r--   0 user1    users           10 Jan 23 17:58:07 2015 TOE54281.222

参考文献:


但似乎您实际上指的是 WinSCP 会话日志中的列表,而不是脚本控制台上的列表(= ls 命令的结果)。

SFTP 或 FTP 协议不提供任何机制让客户端请求仅匹配特定条件的文件列表(更不用说匹配 WinSCP-specific file mask)。

(请注意,您使用的是 SFTP 协议,与您的 post 相反。但是对于 FTP 协议,这一切同样正确)

因此 WinSCP(或任何其他 SFTP 或 FTP 客户端)必须请求服务器提供目录的完整列表,然后在本地过滤该列表以查找符合条件的文件(面具)。

您在会话日志中看到的是导致最终结果的整个过程,最终结果在脚本控制台上列出。该列表在日志中标记为 "Script:" 前缀。

请注意session log is not intended for any kind of automatic processing/parsing, if that was what you wanted to do. If you need to parse the results, use XML log, particularly its ls tag。它仅包含匹配的文件,用于自动 processing/parsing:

<?xml version="1.0" encoding="UTF-8"?>
<session xmlns="http://winscp.net/schema/session/1.0" name="..." start="2015-01-23T20:48:29.696Z">
  ...
  <ls>
    <destination value="/home/user1/TOEFL" />
    <files>
      <file>
        <filename value="TOE54281.111" />
        <type value="-" />
        <size value="10" />
        <modification value="2015-01-23T16:58:07.000Z" />
        <permissions value="rw-r--r--" />
        <owner value="user1" />
        <group value="users" />
      </file>
      <file>
        <filename value="TOE54281.222" />
        <type value="-" />
        <size value="10" />
        <modification value="2015-01-23T16:58:07.000Z" />
        <permissions value="rw-r--r--" />
        <owner value="user1" />
        <group value="users" />
      </file>
    </files>
    <result success="true" />
  </ls>
</session>