KSH脚本将文件移动到SFTP文件夹

时间:2016-08-30 23:32:45

标签: unix scripting

我试图将一个非常具体命名的文件从一个文件夹移动到另一个文件夹(最终是SFTP' d到另一个服务器)。

文件名应如下所示: reports_aug_30.csv

使用我目前的脚本,我在使用该格式时遇到问题。我得到了: aug_30_reports.csv

我想要做的是在开头移动日期,然后让它保留文件名其余部分的名称。

有人对如何格式化报告名称有任何建议吗?

我脚本中的两个相关功能是:

function REPORTS
{
        # specify SFTP report path
        SFTPDIR=/home/josh/domain/sftp/reports
        ALERT_LIST=me@me.com
        CHKSFTP
        typeset -l FILEDR=$tmp
        typeset -l FILENM=reports.csv
        typeset -l MIXFNM=$FILEDR/$FILENM
        typeset -l NEWFILENM
        if [[ -f $MIXFNM ]]
        then
                ls -al $MIXFNM | awk '{print $6,$7}' | while read MONTH DAY
                do
                        NEWFILENM=$FILENM_${MONTH}_${DAY}
                        echo "---------------------------------------------"
                        echo "[ `date` ]"
                        echo "** $FNCTN file located on `hostname` ! **"
                        echo "moving: $MIXFNM to $SFTPDIR/$NEWFILENM"
                        mv $MIXFNM $SFTPDIR/$NEWFILENM
                done
        else
                echo "---------------------------------------------"
               # echo -e "[ `date` ] - No files with a name of $FILENM located in $FILEDR were found on [ `hostname` ] - Please check the respective operations for failures" | mailx -s "$FNCTN File not found [ `hostname` ]!" $ALERT_LIST
                echo "[ `date` ]"
                echo -e "WARNING: No files with a name of $FILENM located in $FILEDR were found on [ `hostname` ]! \n Email alert sent to $ALERT_LIST"
        fi
}

function CHKSFTP
{
## check for the SFTP directory before we continue, if it fails then we exit with failure
if [[ ! -d $SFTPDIR ]]
then
        echo "Please Mount the CIFS share /home/josh/domain/sftp/reports" | mailx -s "SFTP Share Not Mounted [ `hostname` ]!" $ALERT_LIST
        exit 1
fi
}

1 个答案:

答案 0 :(得分:1)

所以你可能在你的脚本中想要这样的东西:

FILENAME=$reports_(date +"%b_%d").csv

所以如果我们回显这个变量,它会显示:

echo $FILENAME

reports_Aug_30.csv

使用你的变量$ FILENAME(你可能会把你的路径设置得更清洁)

只需执行mv $ OLDPATH / $ FILENAME $ NEWPATH / $ FILENAME

有一点语法清理。