2017-07-18 3 views
0

Ich versuche, unter UNIX zu tun: Jeden Tag bekomme ich eine neue Datei im Format ONSITE_EXT_20170707, wo die Ziffern das Datum darstellen. Am nächsten Tag werde ich eine Datei ONSITE_EXT_20170708 usw. erhalten. Mein Ziel war es, diese Datei zu nehmen und sie ohne das Datum umzubenennen. Ich benutzteUNIX Entfernen/ändern Dateiname

mv ONSITE_EXT_$(date +%Y%m%d) ONSITE_EXT. 

Doch einige Tage, die ich nicht eine neue Datei bekommen könnte, damit ich tun müssen zunächst prüfen, was die aktuelle Datei (die mit dem Endtermin) ist und nur die Datei umbenennen. Dies sollte auch prüfen, ob eine Datei verfügbar ist oder nicht.

Jede Hilfe wird zuerst sehr geschätzt.

Antwort

1

Angenommen, Sie befinden sich in demselben Verzeichnis. wo Dateien ankommen.

$ Katze file_move.sh

#!/bin/bash 
today_file=ONSITE_EXT_$(date +%Y%m%d) 
latest_file=`ls -r|head -1` #get the latest file in directory 
file_part=`echo $latest_file |cut -c1-10` #get only ONSITE_EXT part of file 
    if [ ! -z $today_file ] ; then #check if today_file variable is not empty i.e. todays file has arrived 
     mv ONSITE_EXT_$(date +%Y%m%d) ONSITE_EXT #move the file 
    else 
     mv $latest_file $file_part #if todays file isn't arrived. then move latest file only. 
    fi 
+0

hallo syedav, vielen Dank für Ihre Hilfe. Können Sie bitte erklären, was die $ cat file_move.sh ist? Ist das ein Teil der Lösung? Kannst du bitte erklären, was in Zeile 3-5 vor sich geht? Ich habe wirklich keine Erfahrung mit UNIX – afzaaldeveloper1

+0

$ cat file_move.sh ist nicht der Teil des Skripts. nur um den Inhalt der Datei anzuzeigen. Außerdem wurden in fast jedem Schritt Kommentare hinzugefügt. – syadav

+0

Vielen Dank Syedav! Das ist toll – afzaaldeveloper1