将随机文件名子字符串提取到用于FTP推送和归档脚本的Bash脚本中的变量输出



我仍然是shell脚本的新手,我想对收到的账单文件进行一些备份,然后将这些文件上传到FTP服务器目录,完成后将文件归档到一个名为archive的新目录中。以下是让我绊倒的东西:

计费文件随随机子字符串一起发送(例如020001.030002.XXXXXXX.01.2,其中XXXXXX每天更改)。我需要做的是使用类似awk的东西来找到文件名中的子字符串,将其复制到一个变量中,这样我就可以使用它将文件名推送到FTP服务器,然后归档文件。然后,我需要将变量放在类似于FILE=020000.030002.($variable).01.2的文件中。

我在stackoverflow上找到了这篇本质相似的帖子,但由于每次我都有一个随机输入文件,我很难弄清楚如何完成这项任务。如果这不是可以通过shell脚本来完成的,那么还有其他方法(Python等)来完成这项任务吗?


示例文件名-同样,它们是由我的计费服务器随机创建的:(注意,这些文件的末尾没有扩展名)

  • 020001.030002.00320.01.2
  • 020001.030002.07243.01.2
  • 020001.030002.12048.01.2

所需的格式应保持此文件名不变,以便放置在FTP脚本中进行上传,例如:

#/bin/bash
FTPU="user" # ftp login name
FTPP="passwd" # ftp password
FTPS="ftp.server.com" # remote ftp server
FTPF="/home/backup/" # remote ftp server directory for $FTPU & $FTPP
LOCALFILE="020001.030002.($INSERT_VARIABLE_HERE).01.2"
ncftpput -m -u $FTPU -p $FTPP $FTPS  $FTPF $LOCALFILE
f=020001.030002.00320.01.2
id=${f:14:5}
echo $id

结果:

00320

id=${f:14:5}

您从位置提取了14.5个字符。


替代方法:

f=020001.030002.00320.01.2
end=${f/020001.030002./}
echo $end
00320.01.2
core=${end/.01.2/}
echo $core
00320

最新更新