kostenloser Webspace werbefrei: lima-city


Bash - Datum aus Dateiname in Datei

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    tchab

    tchab hat kostenlosen Webspace.

    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. :)
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    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
  4. Autor dieses Themas

    tchab

    tchab hat kostenlosen Webspace.

    Danke, das hat geholfen. :)
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!