2012-10-16 26 views
0

我有如下要求:的Unix shell腳本獲取多個文件,在不同的時機

我有一個java程序寫入大量文件到UNIX文件夾中的日常,但下面的文件使用UNIX Shell腳本

需要SFTP到不同的文件夾

TestSD20121016.csv(它在16:00 P.M每天寫入文件到UNIX文件夾) TestSP20121016.csv

腳本。我寫如下(它在17:00 P.M每天寫入文件到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 [email protected]$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

怎麼樣 添加一行:

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 

我想你知道應該把正確的?

0

如果問題是單個字符,您可以用?,告訴它匹配單個字符(任何字符)替換它:

FILE_TO_UPLOAD= ls -lrt TESTS?`date "+%Y%m%d"`*.CSV | awk '/TEST/{ f=$NF };END{ print f }'