我试图将一个非常具体命名的文件从一个文件夹移动到另一个文件夹(最终是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
}
答案 0 :(得分:1)
所以你可能在你的脚本中想要这样的东西:
FILENAME=$reports_(date +"%b_%d").csv
所以如果我们回显这个变量,它会显示:
echo $FILENAME
reports_Aug_30.csv
使用你的变量$ FILENAME(你可能会把你的路径设置得更清洁)
只需执行mv $ OLDPATH / $ FILENAME $ NEWPATH / $ FILENAME
有一点语法清理。