通过bash中的ftp从列表中上传文件

时间:2017-05-17 08:14:53

标签: bash ftp upload

我有几个文件名为:

TEST_YYYYMMDD.txt

我需要通过ftp 上传,以便获取我运行的文件列表:

files=($(ls | grep -i -E 'TEST_[0-9]{8}.txt'))

现在我收到了文件列表,我怎么能通过put ftp 这些?

function upload() {
list="$1"
length=${#list[*]}
for ((i=0;i<=$(($length - 1)); i++))
do 
 ftp -n host << EOF
 quote USER user
 quote PASS password
 prompt
 put ${list[$i]}
 quit
 EOF
done
}

这会为每个文件打开一个连接 任何人都可以给我一个更好的实施?

mput 我不知道如何使用它。 .TEST_*因为通配符对我来说并不安全。

谢谢

在这里我是如何解决的

function upload() { 
list="$1" 
$user="username"
$password="password"
length=${#list[*]}
echo "open host user $user $password 
 binary 
 cd folder" > tmp/ftp.$$
 for ((i=0;i<=$(($length- 1)); i++))
 do 
echo "put ${list[$i]}" >> tmp/ftp.$$ 
done
echo "quit" >> tmp/ftp.$$
 ftp -ivn < tmp/ftp.$$ 
rm /tmp/ftp.$$ 
}

1 个答案:

答案 0 :(得分:1)

仅循环put命令。

(
 echo quote USER user
 echo quote PASS password
 echo prompt
 for ((i=0;i<=$(($length - 1)); i++))
 do
  echo put ${list[$i]}
 done
 echo quit
) | ftp -n host