![]() |
AWK Frage - Filename ändern, aber wie?
Eine AWK-Frage.
Ich bin mir sicher, ich hab' exakt das hier beschriebene schon einmal gemacht, doch kann ich mich beim besten Willen nicht mehr daran erinnern! Ich bin wohl ein wenig eingerostet was AWK anbelangt.... :( Ich habe eine Datei deren Dateiname im Format 2006-02-16 xxxxxx.yyy ist. Ich möchte nun mit AWK den Dateinamen ändern, und zwar so, dass das Format dann so ausschaut: 060216 xxxxxx.yyy Im Prinzip also nur die "-" beim Datum entfernen und das Jahr zwei- statt vierstellig. Das habe ich codiert in AWK: { filename = FILENAME; jahr = substr(filename,3,2); monat = substr(filename,6,2); tag = substr(filename,9,2); newdatum = jahr "" monat "" tag; topic = substr(filename,11); newfilename = newdatum "" topic; print (newdatum); print (topic); print (newfilename); } Die Variable "newfilename" enthält exakt den Namen, den die Datei danach haben soll. Nur wie umbenennen. Ich erinnere mich dunkel, dass man sowas in die END {} - Schleife hineingeschrieben hat..... Wer weiss Rat? |
hmmm, jetzt antworte ich auf mein eigenes posting.... :cool:
hier die problemlösung, der vollständigkeit halber und falls es interessiert: 'ls > directory_inhalt' ...erzeugt eine datei "directory_inhalt" mit den filenamen 'awk -f awk_datei.awk directory_inhalt > mv_datei' ...erzeugt mit der .awk-datei (siehe unten) eine datei "mv_datei" mit der ich das umbenennen per shell-aufruf erledigen kann 'chmod 777 mv_datei' ...ausführbar machen 'sh mv_datei' ...aufruf im ausgangsverzeichnis ändert die dateinamen wie gewünscht kompliziert zwar, aber es funkt! :bier: wenn wer eine einfachere lösung hierzu hat: nur zu! hier noch die .awk-datei: { jahr = substr($0,3,2); monat = substr($0,6,2); tag = substr($0,9,2); newdatum = jahr "" monat "" tag; topic = substr($0,11); newfilename = newdatum "" topic; print "mv","\"" $0 "\"", "\"" newfilename "\""; } |
Alle Zeitangaben in WEZ +2. Es ist jetzt 04:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag