bash脚本中的通配符

时间:2014-04-13 19:24:55

标签: bash wildcard

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

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

这是我的代码。我只需要做通配符技巧,ftp脚本已经全部工作了。

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

星星是3个数字,有不同的数字,我无法估计,所以我会使用通配符。

谢谢

2 个答案:

答案 0 :(得分:1)

听起来您想处理多个文件,但您的脚本一次只能处理一个文件。此外,因为你指定了FTP,听起来好像文件在FTP服务器上,在这种情况下,本地文件名扩展将无济于事。

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

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

它使用here-document(单独一行<<EOFEOF)来向ftp命令提供输入文本。它将扩展变量$TIMESTAMP,使其成为mget命令的一部分,例如如果$ TIMESTAMP为12345,则会告诉ftp命令mget 123450???vel.radar.h5

答案 1 :(得分:0)

随着?您不仅包括数字,还包括任何字符的字符。所以如果你想只包括数字,你可以替换???字符为[0-9] [0-9] [0-9]。

示例:

如果您有以下文件:

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

用这个你显示正确的文件:

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