2016-08-30 2 views
2

Ich versuche, eine sehr speziell benannte Datei von einem Ordner in einen anderen zu verschieben (was schließlich zu einem anderen Server SFTP ist).KSH-Skript zum Verschieben von Dateien in den SFTP-Ordner

Der Dateiname soll wie folgt aussehen: reports_aug_30.csv

mein gegenwärtiges Skript verwenden, ich Probleme mit ihm in dem auf dieses Format zu bekommen. Ich bekomme: aug_30_reports.csv

Was ich tun möchte, ist das Datum am Anfang verschieben und dann behalten Sie den Namen für den Rest des Dateinamens.

Hat jemand irgendwelche Vorschläge, wie der Name des Berichts wie erwähnt formatiert wird?

Die beiden zugehörigen Funktionen in meinem Skript sind:

function REPORTS 
{ 
     # specify SFTP report path 
     SFTPDIR=/home/josh/domain/sftp/reports 
     [email protected] 
     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

In der Zukunft müssen Sie keinen so großen Codeblock mehr posten. Zeigen Sie das Problem in seiner einfachsten Form mit Beispieleingabe, erwartete Ausgabe, den Code, den Sie haben, Ihre aktuelle Ausgabe und Ihre Kommentare darüber, warum Sie Ihren aktuellen Code verwenden. Verwenden Sie auch das '[ksh]' - Tag, um die Leserschaft Ihres Q zu fokussieren. Viel Glück. – shellter

Antwort

1

So möchten Sie wahrscheinlich so etwas wie dies in Ihrem Skript:

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

so, wenn wir diese Variable echo es zeigt:

echo $FILENAME 

reports_Aug_30.csv 

Verwenden Sie Ihre Variable $ FILENAME (Sie würden wahrscheinlich Ihren Weg woanders sauberer sein)

tun nur mv $ oldpath/$ Dateinamen $ newpath/$ FILE-NAMEN

mit einer wenig Syntax Bereinigung.

+0

Das obige funktionierte. Danke! – jk6411666109

Verwandte Themen