Die Namen mehrerer Dateien durchnummerieren und das Erstellungsdatum ändern.

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von FalseCAM, 27.05.2006.

  1. #1 FalseCAM, 27.05.2006
    FalseCAM

    FalseCAM Tripel-As

    Dabei seit:
    24.12.2005
    Beiträge:
    155
    Zustimmungen:
    0
    Hallo
    Also um die Durchnummerierung geht es mir nur nebenbei, aber das Erstellungsdatum zu ändern ist mir schon wichtig.
    Folgendes: Ich möchte meine selbst geschossenen Bilder mit einem schönen Programm Verwalten. Dieses hat eine schöne Timeline, auf der man die Bilder finden kann. Das Problem: Alle Bilder sind im Jahre 2044 eingeordnet, weil ich das Datum nie in der Kamera einstelle.
    Jetzt hätte ich gern ein Programm, welches mir allen Dateien in einem bestimmten Verzeichnis ein von mir festgelegtes Datum übergibt.
    Da ich aber mal annehme, dass es unter Linux kein solches Programm, wegen Unnötigkeit durch die shell, gibt, hoffe ich, dass jemand ein shell-script hat oder weiss, wie man soetwas realisiert.
    Zum Durchnummerieren, wird jemandem wohl etwas leichtes einfallen.
    Ich hoffe auf und danke euch für eure Hilfe.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 slasher, 27.05.2006
    slasher

    slasher König

    Dabei seit:
    22.03.2006
    Beiträge:
    827
    Zustimmungen:
    0
    touch (siehe man touch) :).

     
  4. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    macht 'touch -d...' oder 'touch -t...' das, was Du suchst?
     
  5. #4 FalseCAM, 27.05.2006
    FalseCAM

    FalseCAM Tripel-As

    Dabei seit:
    24.12.2005
    Beiträge:
    155
    Zustimmungen:
    0
    @slasher @rikola, ich denke es ist schon das richtige, wenn ich damit das Erstellungsdatum ändern kann.
    Wie kann ich es aber in einem shellscript verwenden, dass ich am anfang nach einem Datum gefragt werde und mir das Script dann die Daten aller Dateien im aktuellen Ordner ändert?
     
  6. #5 Wolfgang, 27.05.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Ich hoffe mal, dass derjenige dem etwas einfällt du bist. ;)
    Wir sind eigentlich keine Scriptfabrik.
    touch wurde schon genannt, zum Numerieren solltest du dir mal mv ansehen, und das in eine Schleife über genannte Dateien einbauen.
    Um über einen Zähler zu iterieren, kannst du schematisch so vorgehen:
    Code:
    ...
    A=0; #Initialisieren am Anfang WICHTIG!
    for F in foo*;do
    A=$((A+1));# Hochzählen
    mv $F ${F}_$A 
    done ...
    
    Natürlich musst du für den Schleifenkörper noch die Bedingung etwa mit find o.Ä. anpassen, und prüfen ob es die Datei schon gibt, und ob die Berechtigung da ist etc.

    Gruß Wolfgang
     
  7. #6 Wolfgang, 27.05.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Wenn es nur um den aktuellen Ordner geht:
    Code:
    find . -type f -maxdepth 1 -name "foo*" -printf "%f\n"|cat -n |while read NR NAME; do touch $NAME&&echo "mv $NAME ${NR}_$NAME" ;done
    Nun noch echo entfernen wenn es klappt und dein gewünschtes Datum bei touch einfügen...

    Gruß Wolfgang
    PS Ach ja, wenn du mit unmöglichen Zeichen in dateinamen arbeitest, solltest du noch -print0 nebst xargs verwenden.
     
  8. #7 FalseCAM, 27.05.2006
    Zuletzt bearbeitet: 27.05.2006
    FalseCAM

    FalseCAM Tripel-As

    Dabei seit:
    24.12.2005
    Beiträge:
    155
    Zustimmungen:
    0
    Hier mal ein modifiziertes Zwischenergebnis:
    Code:
    #Created by Wolfgang, modified by FalseCAM
    
    IFS="\n"
    A=0; #Initialisieren am Anfang WICHTIG!
    for File in *.jpg;do
    A=$((A+1));# Hochzählen
    ziel=`echo $A'.jpg'`
    mv $File $ziel 
    done
    
    Edit: Ich glaube mit touch kann man gar nicht das Erstellungsdatum ändern :/
     
  9. #8 Wolfgang, 27.05.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Damit gibst du deinen dateien aber nur noch Nummern.

    Statt ziel =`echo...`
    Kannst du auch gleich
    ziel="${A}.jpg" schreiben, das spart einen unnötigen Prozess.
    du kannst das sogar gleich in deinen mv-Befehl verwenden.

    Tipp: Gibt $ziel und $FILE vorher mit echo aus, um zu prüfen, ob das rauskommt was du willst.
    Erst dann mach mv scharf.
    Vor dem Verschieben füge einfach den touch auf $FILE aus und du hast was du willst.
    Ist natürlich ein dirty Hack, weil du nicht prüfst, ob die Datei schreibbar ist.
    Wenn irgendwelche Leerstellen in deinen Dateinamen vorkommen, kann es zu unerwarteten Ergebnissen kommen.
    Die Dateinamen-Expansion "*.jpg" der shell interessiert sich nämlich nicht um dein IFS, was sogesehen hier wirkungslos bleibt.

    Gruß Wolfgang
     
  10. #9 FalseCAM, 27.05.2006
    Zuletzt bearbeitet: 27.05.2006
    FalseCAM

    FalseCAM Tripel-As

    Dabei seit:
    24.12.2005
    Beiträge:
    155
    Zustimmungen:
    0
    Danke @Wolfgang, du hast mir bisher sehr geholfen.
    Nun sieht das bei mir so aus:
    Code:
    #Created by Wolfgang, modified by FalseCAM
    echo "Alle Dateien in diesem Ordner welches Erstellungsdatum übergeben?"
    echo "Format: YYYYMMDDhhmm"
    read datum
    
    IFS="\n"
    A=0; #Initialisieren am Anfang WICHTIG!
    for File in *.jpg;do
    A=$((A+1));# Hochzählen
    touch -t $datum $File
    ziel=`echo $A'.jpg'`
    mv $File $ziel
    done
    
    Das Problem ist nur, dass touch -t nur das Modified Date ändert :( , nicht aber das Creation Date. :( :(
     
  11. #10 Wolfgang, 27.05.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Dann bist du scheinbar ungläubig. :D
    Was sagt denn dein: man touch?
    Gruß Wolfgang
     
  12. #11 FalseCAM, 27.05.2006
    FalseCAM

    FalseCAM Tripel-As

    Dabei seit:
    24.12.2005
    Beiträge:
    155
    Zustimmungen:
    0
    Ich habe es nochmal mit touch -d ausprobiert. Auch das ändert nur das Modified Date.
     
  13. #12 Wolfgang, 27.05.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Was willst du denn ändern?
    Lies bitte mal die Manpage!
    touch -d"20060213" --time=atime test

    Nur mal so als Denkanstoß.

    Gruß Wolfgang
     
  14. #13 FalseCAM, 27.05.2006
    FalseCAM

    FalseCAM Tripel-As

    Dabei seit:
    24.12.2005
    Beiträge:
    155
    Zustimmungen:
    0
    Hier ist das, was ich ändern möchte:
     

    Anhänge:

  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 Xanti, 27.05.2006
    Zuletzt bearbeitet: 27.05.2006
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Ich glaube, man kann die creation time des inodes (nicht verwechseln mit der ctime - change time) nicht mittels touch ändern. Das geht wohl nur, wenn Du die Datei umkopierst. Also date setzen, kopieren (ohne preserve-timestamp).

    Aber: die creation time des Bildes sollte dem Datum entsprechen, an dem Du die Bilder von der Kamera auf Deinen Rechner kopiert hast. Deswegen vermute ich, dass die Creation time nicht die des inodes ist, sondern die in den exif-Daten des Bildes gespeicherte ist. Wie man die ändert -> keine Ahnung.

    Gruss, Xanti
     
  17. Zico

    Zico Lebende Foren Legende

    Dabei seit:
    16.04.2004
    Beiträge:
    1.559
    Zustimmungen:
    0
    Aaaahhh exif-Daten. So nennt man das. Das wusste ich bis dato noch nicht.
    Abe rich denke doch mal, dass man das auch irgendwie Änndern könnte, odeR? Bei OGG/MP3 gibts ja diese Tags - im übertragenden Sinne kann man das ja mit den exif-Daten vergleichen Also müsste es doch auch hier ne Chance zur Änderung geben.
     
Thema:

Die Namen mehrerer Dateien durchnummerieren und das Erstellungsdatum ändern.

Die Seite wird geladen...

Die Namen mehrerer Dateien durchnummerieren und das Erstellungsdatum ändern. - Ähnliche Themen

  1. cd mit Bindestrich im Verzeichnisnamen...?

    cd mit Bindestrich im Verzeichnisnamen...?: kann gelöscht werden
  2. Systemd 220 bringt persistente Netzwerk-Interface-Namen bei Debian und Ubuntu

    Systemd 220 bringt persistente Netzwerk-Interface-Namen bei Debian und Ubuntu: Martin Pitt, der im Mai eine Diskussion über seine Pläne für persistente, vorhersehbare Netzwerk-Interface-Namen startete, hat nun die Grundlagen...
  3. Vorschlag zu persistenten Netzwerk-Interface-Namen

    Vorschlag zu persistenten Netzwerk-Interface-Namen: Martin Pitt, Ubuntu- und Debian-Entwickler, hat auf den Mailinglisten beider Distributionen einen Vorschlag unterbreitet, Netzwerkkarten künftig...
  4. usernamen als argument übergeben

    usernamen als argument übergeben: Hi ich bin anfänger auf dem gebiet und möchte ein einfaches backup script schreiben. #!/bin/bash #Bei Ausführung des Scripts werden alle Datein...
  5. Neues Unreal Tournament auch für Linux

    Neues Unreal Tournament auch für Linux: Epic Games hat mit »Unreal Tournament« eine Fortsetzung des Shooter-Klassikers angekündigt. Der neue Titel soll einen Neustart der Serie...