我有一个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文档(<<EOF
到EOF
在一行中)为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