Hallo Liste, ich habe eine kleines Problem mit einem Skript. Ich möchte gern in einem Verzeichnis ein Unterverzeichnis anlegen lassen, das die aktuelle Woche beeinhaltet. Ziel ist es, Dateien wöchentlich zu sortieren. Im Grunde habe ich das auch danke google fertig. Allerdings kenne ich leider nicht die Ausgabe, die mir date zurückgibt, wenn ich z.B. die 1. Kalenderwoche im Jahr habe. Aus man date wurde ich nicht schlau. Ich vermute, dass es schlicht '1' sein wird. Dann müsste ich mein Skript um eine Abfrage erweitern und eine '0' davor schreiben, um die einstelligen Wochen vor den anderen angezeigt zu bekommen. Ich bin sicher, dass alle außer mir eine Lösung kennen. Soweit bin ich schon: #!/bin/bash Woche=`date +%V`'. KW' mkdir "$Woche" mv *.DSS "$Woche" Gruß und Danke, Alex -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Alex Winzer schrieb:
Hallo Liste,
ich habe eine kleines Problem mit einem Skript. Ich möchte gern in einem Verzeichnis ein Unterverzeichnis anlegen lassen, das die aktuelle Woche beeinhaltet. Ziel ist es, Dateien wöchentlich zu sortieren. Im Grunde habe ich das auch danke google fertig. Allerdings kenne ich leider nicht die Ausgabe, die mir date zurückgibt, wenn ich z.B. die 1. Kalenderwoche im Jahr habe. Aus man date wurde ich nicht schlau. Ich vermute, dass es schlicht '1' sein wird. Dann müsste ich mein Skript um eine Abfrage erweitern und eine '0' davor schreiben, um die einstelligen Wochen vor den anderen angezeigt zu bekommen. Ich bin sicher, dass alle außer mir eine Lösung kennen.
Soweit bin ich schon:
#!/bin/bash Woche=`date +%V`'. KW' mkdir "$Woche" mv *.DSS "$Woche"
Gruß und Danke, Alex
Hallo, ein "date --help" offenbart die Lösung: da kommt standartmässig ein zweistelliges Ergebnis. man kann auf Nummer Sicher gehen und "date +%0V" verwenden (0- mit Nullen auffüllen!). Wenn es einstellig sein soll, dann muss an diese Stelle ein "-" und der Befehl lautet dann "date +%-V". Man kann natürlich auch mit Leerzeichen auffüllen ("_" - mit Leerzeichen auffüllen). -- Mit freundlichen Grüßen Sebastian Reinhardt -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Son, 15 Jun 2008, Alex Winzer schrieb: [..]
vermute, dass es schlicht '1' sein wird.
Nein.
Dann müsste ich mein Skript um eine Abfrage erweitern und eine '0' davor schreiben, um die einstelligen Wochen vor den anderen angezeigt zu bekommen.
Die Dokumentation von date und dem verwendeten strftime besagt was anderes: ==== info date -> info '(sh-utils)Date directives' === `%V' week number of year with Monday as first day of the week as a decimal (01...53). If the week containing January 1 has four or more days in the new year, then it is considered week 1; otherwise, it is week 53 of the previous year, and the next week is week 1. (See the ISO 8601: 1988 standard.) ==== ==== man 3 strftime ==== %V The ISO 8601:1988 week number of the current year as a decimal number, range 01 to 53, where week 1 is the first week that has at least 4 days in the current year, and with Monday as the first day of the week. See also %U and %W. (SU) ====
Soweit bin ich schon:
#!/bin/bash Woche=`date +%V`'. KW'
Woche="`date '+%05V. KW'`" ^ die 5 zur Verdeutlichung ;) Für zweistellig reicht auch das simple %V: $ date -d 2008/1/1 '+%V. KW' 01. KW $ date -d 2008/1/1 '+%1V. KW' 1. KW $ Siehe auch 'man 3 strftime'. Auch interessant in dem Kontext dürfte 'man 3 printf' sein. HTH, -dnh -- I'm extremely disappointed. I send you out for exciting, new designer drugs, you come back with tomato sauce. -- Dr. House -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Alex, On Sunday 15 June 2008 23:25:34 Alex Winzer wrote:
Soweit bin ich schon:
#!/bin/bash Woche=`date +%V`'. KW' mkdir "$Woche" mv *.DSS "$Woche"
Zwei schnelle Ideen: Woche=$(date '+%V' | sed 's/^\([[:digit:]]\)$/0\1/') Woche=$(printf "%02u" $(date '+%V') ) Roman -- Roman Fietze Telemotive AG Büro Mühlhausen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (4)
-
Alex Winzer
-
David Haller
-
Roman Fietze
-
Sebastian Reinhardt