我试图通过WinSCP脚本做一个简单的ls。 FTP上有许多文件(格式为TOE#####.###
,其中#
为数字),我只想要文件夹TOE54281
中以TOEFL
开头的文件。
我已经尝试了ls TOEFL/TOE54281*
,ls TOEFL/TOE54281*.???
,ls TOEFL/*54281*
(和其他替代方案),但所有文件内容都给了我,而不仅仅是那些以我需要的方式开头的内容。< / p>
有什么建议吗?
2015-01-23 13:23:43.878脚本:ls TOEFL / TOE52481 *
。 2015-01-23 13:23:43.878列出目录“/ TOEFL”。
2015-01-23 13:23:43.878类型:SSH_FXP_OPENDIR,尺寸:15,编号:267
&LT; 2015-01-23 13:23:43.910类型:SSH_FXP_HANDLE,尺寸:13,编号:267
2015-01-23 13:23:43.910类型:SSH_FXP_READDIR,尺寸:13,编号:524
...
&LT; 2015-01-23 13:23:50.618类型:SSH_FXP_STATUS,尺寸:28,编号:58892
&LT; 2015-01-23 13:23:50.618状态代码:1
2015-01-23 13:23:50.618类型:SSH_FXP_CLOSE,大小:13,编号: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
&LT; 2015-01-23 13:24:07.545脚本:-rw-rw-r-- 1 4433 4433 415685 10月10日11:55:26 2014 TOE52481.015
&LT; 2015-01-23 13:24:07.545脚本:-rw-rw-r-- 1 4433 4433 393699 10月17日9:39:41 TOE52481.016
&LT; 2015-01-23 13:24:07.545脚本:-rw-rw-r-- 1 4433 4433 402250 Sep 26 10:13:23 2014 TOE52481.013
&LT; 2015-01-23 13:24:07.545脚本:-rw-rw-r-- 1 4433 4433 559835 10月24日10:28:07 2014 TOE52481.017
&LT; 2015-01-23 13:24:07.545脚本:-rw-rw-r-- 1 4433 4433 605034 10月31日11:24:01 2014 TOE52481.018
答案 0 :(得分:0)
你的前两个面具是正确的:
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协议,与您的帖子相反。但对于FTP协议,所有这些都同样如此)
因此,WinSCP(或任何其他SFTP或FTP客户端)必须请求服务器提供目录的完整列表,然后在本地过滤该列表以查找符合条件(掩码)的文件。
您在会话日志中看到的是导致最终结果的整个过程,该过程在脚本控制台上列出。该列表在日志中标记为“Script:”前缀。
请注意,session log不适用于任何类型的自动处理/解析,如果这是您想要做的。如果您需要解析结果,请使用XML log,尤其是ls
tag。它仅包含匹配的文件,用于自动处理/解析:
<?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>