我有以下要求:
我有一个java进程,它每天将大量文件写入unix文件夹,但是下面的文件需要使用Unix Shell脚本将sftp写入不同的文件夹
TestSD20121016.csv(每天下午16点将文件写入unix文件夹) TestSP20121016.csv(每天下午17:00将文件写入unix文件夹)
我写的脚本如下:
#!/bin/sh
#------------------------------------------------------------------------
# Parameters
# sftp_file_uploads.sh remoteServer functionalId
#------------------------------------------------------------------------
REMOTE_SERVER=$1
FUNCTIONAL_ID=$2
FILE_TO_UPLOAD= ls -lrt TESTSD`date "+%Y%m%d"`*.CSV | awk '/TEST/{ f=$NF };END{ print f }'
#------------------------------------------------------------------------
# Create sftp script
#------------------------------------------------------------------------
rm -f /var/tmp/SFTP_FILE_UPLOAD
echo "lcd $3" > /var/tmp/SFTP_FILE_UPLOAD
echo "cd $5" >> /var/tmp/SFTP_FILE_UPLOAD
echo "put $FILE_TO_UPLOAD" >> /var/tmp/SFTP_FILE_UPLOAD
echo "bye" >> /var/tmp/SFTP_FILE_UPLOAD
#------------------------------------------------------------------------
# Do sftp
#------------------------------------------------------------------------
echo " Before SFTP " > /tmp/FILE_UPLOAD_LOG
/usr/bin/sftp -B /var/tmp/SFTP_FILE_UPLOAD $2@$1 1>/var/tmp/sftp.log 2>&1
result=$?
if [ $result -eq 0 ]
then
echo "SFTP completed successfully"
else
echo "FAILED to SFTP"
exit 1
fi
exit 0
问题是脚本能够接受文件TestSD20121016.csv而不是文件TestSP20121016.csv,我不知道如何编写上面的脚本来做sftp第二个文件。
此致
Chaitu
答案 0 :(得分:0)
FILE_TO_UPLOAD2= ls -lrt TESTSP`date "+%Y%m%d"`*.CSV | awk '/TEST/{ f=$NF };END{ print f }'
和行
echo "put $FILE_TO_UPLOAD2" >> /var/tmp/SFTP_FILE_UPLOAD
我想你知道应该放在哪里吗?
答案 1 :(得分:0)
如果问题是单个字符,您可以用?
替换它,告诉它匹配单个字符(任何字符):
FILE_TO_UPLOAD= ls -lrt TESTS?`date "+%Y%m%d"`*.CSV | awk '/TEST/{ f=$NF };END{ print f }'