在 AIX 服务器上使用 regex 和 pscp

Posted

技术标签:

【中文标题】在 AIX 服务器上使用 regex 和 pscp【英文标题】:Using regex and pscp on AIX servers 【发布时间】:2021-02-08 14:19:29 【问题描述】:

我在 AIX 服务器上使用 pscp 和 regex 时遇到了很多麻烦。

如您所见,我正在尝试使用 Putty 的 pscp 将文件“stdout”传输到我的本地文件夹。

这通常可以正常工作,但我的问题是我不知道完全相同的文件夹名称,所以我需要使用 REGEX

有人告诉我,我的正则表达式可能是为 grep 编写的,而 pscp 不支持它。

那么为 pscp 编写正则表达式的替代方法是什么。

错误消息是:“不支持多级通配符

pscp.exe -P 22 -pw krt_345 testuser@testserver5:"/app/log/s500/20201023/.\*/20201023-02\.2[0-9]\.[0-5][0-9]_s500_testuser.\*"/stdout C:\logs

仅正则表达式:

"/app/log/s500/20201023/.\*/20201023-02\.2[0-9]\.[0-5][0-9]_s500_testuser.\*"/stdout

【问题讨论】:

【参考方案1】:

使用 SCP 协议,路径中的文件掩码由服务器解析。使用典型的 OpenSSH scp“服务器”,您可以使用标准的 Linux glob 掩码。绝对不是正则表达式。虽然你的面具很简单,但一个简单的 glob 面具 20201023-02.2[0-9].[0-5][0-9]_s500_testuser* 会。但是您只能对最后一个路径组件使用 glob 掩码。不适用于父目录。 “multiple-level wildcards unsupported” 错误消息试图告诉您什么。

所以你正在做的事情对于 SCP 是不可行的。您必须使用其他方式获取文件夹名称。就像通过 SSH 使用 shell 命令一样。

我相信您已经提出了这个要求:Finding folder name on a server using batch file根据您对答案的 cmets,您已经知道将 find 之类的 shell 命令与SCP。所以我不明白,你为什么不要求呢。

【讨论】:

感谢您的反馈。谢谢你向我解释这个。找 。 -type d -regextype sed -regex ".*/20201020-17\.5[0-9]\.[0-5][0-9]_r52d4.*" - 这个答案在 aix 服务器上不起作用, “无效的正则表达式类型:sed”我必须弄清楚。 您不需要正则表达式,您可以使用简单的全局掩码:find ./ -type d -name "20201020-17.5[0-9].[0-5][0-9]_r52d4*"

以上是关于在 AIX 服务器上使用 regex 和 pscp的主要内容,如果未能解决你的问题,请参考以下文章

window中使用putty的pscp上传文件到linux服务器上遇到以下问题

scp从linux服务器拷贝文件到windows的机子上怎么写命令?

AIX 上使用NFS实现AIX之间文件网络共享

重音字母和 sql plus/AIX

使用putty的pscp命令进行本地和Linux服务器的传输

在 aix 上安装 Python