使用通配符
为文件传输指定源文件名和源文件路径时,可以使用通配符。 这使您能够同时选择多个文件。
分布式平台
- ?
- 使用问号 (?) 正好表示一个字符。 匹配的文件名中需要存在指定的所有其他字符。
例如,
ab?d.jpg
与文件abcd.jpg
、abed.jpg
和abfd.jpg
相匹配。 - *
- 使用星号字符 (*) 表示零个或零个以上字符。
例如,
*.txt
与文件abc.txt
和x.txt
相匹配。模式
*txt
与文件abc.txt
、x.txt
和newtxt
相匹配,因为句点 (.) 在文件名中是必需字符。必须将星号字符 (*) 用双引号引起来。 如果不这样做,命令 shell 将解释该字符,可能会导致命令失败。
在 UNIX 和 Linux®上,使用星号字符 (
*
) 将不包含伪隐藏文件,例如.bashrc
。
如果操作系统对于文件和路径名 (例如 Windows) 不区分大小写,那么模式匹配不区分大小写。 只可以使用通配符指定文件名:不能在目录名中使用通配符。
协议网桥代理
如果要使用协议网桥代理传输来自 FTP、FTPS 或 SFTP 文件服务器的文件,那么通配符匹配是区分大小写的,这与实际运行文件服务器的平台无关。
Connect:Direct 网桥
当传输源是从 Connect:Direct 节点请求文件的 Connect:Direct® 网桥代理时,不支持通配符。
IBM i
- ?
- 使用问号 (?) 正好表示一个字符。 匹配的文件名中需要存在指定的所有其他字符。
例如,
ab?d.jpg
与文件abcd.jpg
、abed.jpg
和abfd.jpg
相匹配。 - *
- 使用星号字符 (*) 表示零个或零个以上字符。
例如,
*.txt
与文件abc.txt
和x.txt
相匹配。模式
*txt
与文件abc.txt
、x.txt
和newtxt
相匹配,因为句点 (.) 在模式中是必需字符。有关将通配符用于保存文件传输的其他注意事项,请参阅 传输驻留在 IBM i 系统上的 QSYS.LIB 文件系统中的保存文件 。
z/OS
对于 z/OS® 系统, IBM MQ Managed File Transfer 的通配符规则通常遵循标准 ISPF 通配符约定。 连续数据集和分区数据集的特定规则如下:顺序数据集
引用连续数据集时,可以按如下所述使用包含星号 (*) 和百分号 (%) 的数据集名称限定符:- *
- 使用单个星号 (*) 表示至少一个限定符。 限定符中的单个星号表示零个或零个以上字符。
- **
- 使用双星号 (**) 表示零个或零个以上限定符。 不能在限定符中使用双星号。
- %
- 使用单个百分号 (%) 表示一个字母数字或本地语言字符。
- %%
- 使用一到八个百分号表示零个或零个以上字符。
分区数据库
引用分区数据集时,只能为成员名指定通配符。 可以按如下所述使用包含星号 (*)、下划线 (_) 和问号 (?) 的数据集名称限定符:- *
- 使用星号 (*) 字符表示零个或零个以上字符。
- _
- 使用下划线 (_) 字符仅表示一个字符。
- ?
- 使用问号 (?) 字符正好表示一个字符。 问号是下划线字符的备用选择,作为 ISPF 约定的附加项提供。
目录
缺省情况下,如果使用与子目录匹配的通配符模式创建文件传输,那么不会传输子目录。 您可以在 fteCreateTransfer 命令上指定 -r 参数,以包含与通配符模式匹配的子目录。 传输子目录时,将传输子目录的全部内容和结构:包括其所有文件、子目录和隐藏文件。
例如,如果具有名为 abc
的目录,那么指定源文件路径 /opt/abc
和 /opt/abc/*
之间的行为存在差异。 在 /opt/abc
的情况下,由于传输目录,因此将在目标路径创建名为 abc
的目录,并将传输所有文件内容。 在 /opt/abc/*
的情况下,会将 abc
的内容传输到目标路径。
隐藏文件
通配符与隐藏文件不匹配,但在 UNIX 类型的平台上,通配符模式以点字符 (.) 开头时除外。 例如:/opt/.*
传输 opt 目录中的所有隐藏文件。在 Windows 上,如果要传输隐藏文件,请准确指定文件名或传输包含隐藏文件的目录。
符号链接
符号链接是一种包含指向另一个文件或目录的指针的文件类型,在 Windows 上称为快捷方式。 您可以使用通配符来匹配符号链接文件。 但是,从符号链接形式的源创建目标文件时,目标文件将成为硬链接(即常规文件)。 无法将符号链接成功地传输到目录,因为这可能会创建递归路径。传输文件名中具有通配符的文件
文件名自身包含通配符时,可以传输文件。 如果准确指定文件名,那么只会传输该文件,而不会传输与通配符匹配的文件集。例如,如果具有名为 /opt/abc*.txt
的文件并为 /opt/abc*.txt
创建文件传输,那么只会传输文件 /opt/abc*.txt
。 但如果为 /opt/ab*.txt
创建文件传输,那么将传输所有与模式 /opt/ab*.txt
匹配的文件,包括文件 /opt/abc*.txt
。
传输包含通配符的目录路径
用双引号 (" ") 或单引号 (' ') 引起任何包含通配符的目录路径,以避免 shell 扩展。 当操作系统在将通配符传递到 IBM MQ Managed File Transfer 命令之前扩展通配符时,会发生 shell 扩展,这可能会导致意外行为。${...}
是来自资源监视器的变量替换:fteCreateTransfer -p QM_VENUS -sa AGT.QM_JUPITER -sm QM_JUPITER -da AGT.QM_NEPTUNE -dm QM_NEPTUNE -r -sd delete
-t binary -de overwrite -jn MONTASK -gt /home/fteadmin/bin/TransferTask.xml -df "${FilePath}" "${FilePath}"
shell 解析 ${FilePath}
,并且不会将其传递至命令。 变通方法为使用双引号将 ${FilePath}
括起来,即 ${FilePath}
。即使通配符匹配零个文件,也将传输报告为成功
如果尝试传输不存在的文件,那么 IBM MQ Managed File Transfer 会将此尝试视为失败的传输。 如果显式指定文件名 (例如, /a/missing/filename.txt) ,并且 MQMFT 找不到该文件,那么会在日志中报告以下错误消息:
BFGIO0001E: File "/a/missing/filename.txt" does not exist
作为这个过程的一部分,源代理(可能找不到该文件)通知目标代理已取消此文件传输(因为源代理无法找到要读取的源文件)。 如果您计划在传输后触发一个出口,那么目标代理会为该文件名触发包含 CANCEL_FILE 的 FileExitResultCode 的 DestinationTransferEndExit。
The transfer request has successfully completed, although no files were transferred.
在该示例中,由于传输中未涉及目标代理,因此未调用其出口。