bash脚本中的通配符



我有一个bash脚本来从ftp检索文件。

现在,文件名中有一部分是日期字符串,但也有未定义的数字,每个文件都会更改。我想根据日期下载文件。

这是我的密码。我只需要做通配符的把戏,ftp脚本已经准备好了。

filename=$(echo $TIMESTAMP'0***vel.radar.h5')

恒星是3个数字,有不同的数字,我无法估计,所以我会用通配符来表示它们。

感谢

听起来你想处理多个文件,但你的脚本一次只能处理一个文件。此外,因为您指定了FTP,所以听起来文件在FTP服务器上,在这种情况下,本地文件名扩展将没有帮助。

您可能希望使用ftp客户端的mget命令下载多个与远程模式匹配的文件。您还希望将$TIMESTAMP作为模式的一部分。我建议这样做:

ftp remote-hostname <<EOF
cd path/to/log/files
prompt
mget ${TIMESTAMP}0???vel.radar.h5
bye
EOF

这使用一个here文档(<<EOFEOF在一行中)为ftp命令提供输入文本。它将扩展变量$TIMESTAMP,使其成为mget命令的一部分,例如,如果$TIMESTAMP为12345,ftp命令将被告知mget 123450???vel.radar.h5

使用?字符不仅包括数字,还包括任何字符。所以,如果你只想包括数字,你可以替换???具有[0-9][0-9][0-9]的字符。

示例:

如果您有以下文件:

$ ls 0123vel.h5 0333vel.h5 033vel.h5 0pecvel.h5

用这个ls可以显示正确的文件:

$ ls 0[0-9][0-9][0-9]vel.radar.h5 0123vel.h5 0333vel.h5

相关内容

  • 没有找到相关文章

最新更新