Bash - Datum aus Dateiname in Datei
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
anwenden
code
date
datei
datensatz
datum
erledigen
ersetzen
file
folgendes format
kontrolle
leute
match
null
problem
rutsch
test
tip
url
versuch
-
Moin Leute,
ich möchte momentan meine Blogartikel ein bisschen aufräumen und hatte eigentlich vor, das in einem Rutsch von einem Bashscript erledigen zu lassen.
Das Ändern der Dateiendungen ist soweit kein Problem, aber ich schaffe es einfach nicht, das Datum aus den Dateinamen in die Datei zu schreiben.
Die Dateien haben folgendes Format im Namen
2014-02-16-irgend_was_unwichtiges.md
Nun möchte ich eine Zeile in die Datei einfügen (würde ich über sed machen und so das erste "---" durch "---\ndate: 2014-02-16" ersetzen), doch es scheitert schon bei der Kontrolle der Dateinamen.
Ich habe euch hier mal den Datensatz, auf den ich das Script anwenden möchte bereit gestellt.
Bisher schaut mein Script so aus:
#!/bin/bash for file in *.markdown; do mv "$file" "`basename $file .markdown`.md" done for file in *.mdown; do mv "$file" "`basename $file .mdown`.md" done for file in *.md; do echo $file if test "$file" = '\d{4}-\d{2}-\d{2}-.*' then echo "Match!" date=${file:0:10} echo $date fi done
Hoffe, ihr könnt mir nen guten Tipp geben. :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Versuch es mal so:
#!/bin/bash for file in *.markdown; do mv "$file" "`basename $file .markdown`.md" done for file in *.mdown; do mv "$file" "`basename $file .mdown`.md" done for file in *.md; do if expr "$file" : '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-.*' > /dev/null then date=${file:0:10} echo "Match! ($date)" sed -i '/^date: [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} *[0-9:]*$/d' $file sed -i "0,/^---$/{s/^---$/---\\ndate: $date/}" $file fi done
-
Danke, das hat geholfen. :)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage