shell脚本模式匹配?

时间:2010-03-23 12:45:02

标签: regex shell ftp scripting

我想我一生都写过一个shell脚本,我甚至不确定是否可以这样做,但我正在尝试编写一个ftp目录内容的脚本,一个一次。也就是说,它将ftp一个然后关闭连接,然后ftp第二个,然后关闭等等。这是因为目录中最多可能有五个文件,所有文件都至少为2GB。一次性将它们全部擦除总是会导致重置连接。我认为如果我可以匹配部分文件名,那么也许这将有所帮助,因为它们都以相同的方式命名。

因此,在目录中,它将具有:

SampleFileA_20100322_1.txt
SampleFileA_20100322_2.txt
SampleFileB_20100322_1.txt
SampleFileC_20100322_1.txt

我想首先ftp SampleFileA_xxxx_1,然后是SampleFileA_xxxx_2等。这是当前的ftp脚本,它试图一次性下载所有内容......

#!/bin/bash
REMOTE='ftp.EXAMPLE.com'
USER='USERNAME'
PASSWORD='PASSWORD'
FTPLOG='/tmp/ftplog'
date >> $FTPLOG

ftp -in $REMOTE <<EOF
_FTP>>$FTPLOG
quote USER $USER
quote PASS $PASSWORD
bin
cd download
mget *
quit
_FTP
:wq!

1 个答案:

答案 0 :(得分:1)

基于你的问题,我认为你需要像

这样的东西
files=`ls Sample*txt`

for file in $files
do
  run_ftp_function $file
done

你需要设置“run_ftp_function”来发送(就像你已经拥有的那样)使用$ 1作为要发送的文件