Text Dateien umbenennen Aufgrund vom Inhalt

  1. Atomitanz

    Atomitanz Thread StarterMacUser Mitglied

    Mitglied seit:
    15.01.2004
    Beiträge:
    67
    Zustimmungen:
    0
    Hallo zusammen,

    Heute hab ich ein Problem der ganz besonderen Art :D :

    Ich möchte eine Unmenge an Textdateien aufgrund Ihres Inhaltes umbenennen. Also in der Datei "seite 10.txt" kommt zum Beispiel irgendwo der Text "IDNummer: 12345" und ich möchte nun die Datei automatisch in "12345.txt" umbenennen.

    Da es sich um ca. 500 Dateien handelt die automatisch von einem anderen Program erzeugt werden (auf das ich keinerlei Einfluss habe) und ich diese Umwandlung des öffteren durchführen müsste wäre ein Script schön.

    Hat jemand Vorschläge?

    Danke im Voraus

    Gruss
    Atomitanz
     
    Atomitanz, 25.10.2004
  2. Placebo

    PlaceboMacUser Mitglied

    Mitglied seit:
    24.10.2004
    Beiträge:
    210
    Zustimmungen:
    0
    Vielleicht versuchst du es mal im AppleScript-Forum oder auf anderen Webseiten die sich damit beschäftigen wie zb hier http://fischer-bayern.de/applescript/html/mag.html.

    Als Hinweis gebe ich dir hier noch eine kleine Überlegung mit auf den Weg. Für dein Vorhaben bräuchtest du ein Script welches eng mit deinem Texteditor und dem Finder arbeitet. Die Scriptfunktion sollte das Öffnen, Lesen und Text-Kopieren und Einsetzen in Texten beherrschen. So ein Script kostet viel Zeit und Aufwand und es wird dir niemand kostenlos programmieren. Es gibt meines Wissens kein Programm welche diese Funktionen anbietet. Und wenn, dann dürften sich die Kosten dafür im dreistelligen Bereich bewegen.

    Versuche doch mal einen kompletten Arbeitsgang deines Vorhabens manuell durchzuführen und benutze dabei die Aufzeichnungsfunktion (Recorder) des Scripteditors, dann wirst du sehen was passiert.
     
    Placebo, 25.10.2004
  3. UdoN

    UdoNMacUser Mitglied

    Mitglied seit:
    18.06.2004
    Beiträge:
    236
    Zustimmungen:
    0
    Was steht vor/hinter dem 'IDNummer: xxxxx'?
    Ist das bei allen Dateien gleich (auch die gross/klein Schreibung)?
    Ich wuerde sowas mit Perl machen.
    Wie placebo schrieb ist wohl Applescript nicht geeignet.
    Mit der Shell oder Perl sollte das aber kein Problem sein. Du musst nur wissen nach welchen Regel das 'IDNummer...' in die Dateien eingefuegt wird.

    Udo
     
    UdoN, 25.10.2004
  4. maceis

    maceisMacUser Mitglied

    Mitglied seit:
    24.09.2003
    Beiträge:
    16.696
    Zustimmungen:
    602
    Ich stimme UdoN zu.
    mit einem Shellskript wäre das durchaus machbar.

    kleine Anregung:
    mit "grep -r" kannst Du Dateien (-r=> rekursiv) nach bestimmten Suchmustern durchsuchen (z. B. falls Du die Dateien erst nach bestimmten Kriterien sortieren musst);
    mit "sed" kannst Du eine Datei zeilenweise durchsuchen, editieren und ggf. ändern;
    Mit "cut" kannst du aus aus Zeilen bestimmte Teile (z. B. die ID Nummer) ausschneiden und ggf. in eine Variable speichern.
    Mit dieser Variablen kannst Du dann die Umbennennung steuern.

    Perl kommt sicher auch in Frage.
    Die Syntax ist etwas anders, aber die Methode dürfte auf das selbe hinauslaufen.
     
    maceis, 26.10.2004
  5. calinux

    calinuxMacUser Mitglied

    Mitglied seit:
    28.09.2004
    Beiträge:
    64
    Zustimmungen:
    0
    Juuten Abend! ;)

    Wenn man folgendes noch ein kleines bisschen "aufbohrt" kommt man mit Sicherheit ans Ziel.. auch ganz ohne teures Skript :)


    find ./ -name `egrep -l -s -r "regulaerer_Ausdruck" *` -exec mv \{\} ID_regulaerer_Ausdruck.txt \;


    Allerdings kommt man wohl net ohne eine Variable aus, (oder etwa doch? :)) daher würd ich das ganze in ein Shell-Skript verpacken- oder wie schon andere gesagt haben: in Perl schreiben *g* :)

    Soll nur ne kleine Hilfestellung gewesen sein.. für "MEHR" bin ich inzwischen zu müde..

    Gutes Nächtle wünsch ich noch :)

    calinux
     
    calinux, 26.10.2004
  6. Atomitanz

    Atomitanz Thread StarterMacUser Mitglied

    Mitglied seit:
    15.01.2004
    Beiträge:
    67
    Zustimmungen:
    0
    Hallo zuusammen,

    danke für die Tipps. Das aussehen der IDNummer kann ich beeinflussen, somit sollte das kein Problem darstellen.

    calinux kommt dem was mir vorschwebt recht nahe. Auf meiner Suche bin ich gestern auf AWK gestossen. Damit sollte es eigentlich recht einfache :rolleyes: sein. Hat da jemand Erfahrungen?

    Mit Shellprogramierungen habe ich erst angefangen, aber damit möchte ich es eigentlich durchführen. Perl habe ich 0 Ahnung und Applescript finde ich wiederum zu kompliziert und wahrscheinlich in der Ausführung am Ende zu langsam (für dieses "simple" Problem).

    Gruss
    Atomitanz
     
    Atomitanz, 26.10.2004
  7. canfAN

    canfANMacUser Mitglied

    Mitglied seit:
    06.02.2003
    Beiträge:
    66
    Zustimmungen:
    0
    Vielleicht ungefähr so: (Perl, ungetestet!)

    Code:
    #!/usr/bin/perl -w
    
    use strict;
    
    my $dir = $ARGV[0] || die("Kein Verzeichnis angegeben!\n");
    opendir(DIR, $dir) || die("Kann Verzeichnis '$dir' nicht öffnen.\n");
    my @files = grep(/\.txt$/, readdir(DIR));
    closedir(DIR);
    chdir($dir);
    
    foreach my $file (@files)
    {
       my $filename;
       my $text;
    	 
       open(FILE, $file) || die("Kann Datei '$file' nicht lesen.\n");
       $text = <FILE>;
       close(FILE) ||die("Kann Datei '$file' nicht schließen.\n");
    	
       # IDNummer: (\d+) entsprechend anpassen, 
       # \d+ steht für beliebig viele Zahlen
       if ($text =~ /IDNummer: (\d+)/s)
       {
          # Diese Zahlen werden mit '.txt' der neue Dateiname
          $filename = $1 . ".txt"; 
          rename($file, $filename);
       }
    }
    
    Als bla abspeichern und dann chmod 755 bla; ./bla /Users/meinverzeichnis/meinedateien
     
    canfAN, 26.10.2004
  8. maceis

    maceisMacUser Mitglied

    Mitglied seit:
    24.09.2003
    Beiträge:
    16.696
    Zustimmungen:
    602
    Ich hab mal was mit awk versucht.
    Hatte mich damals erstmal ziemlich verzettelt.
    Da würde ich eher versuchen "sed" einzusetzen. Sollte bei entsprechendem "Kopfeinsatz" auch in einer Zeile machbar sein ;)
    Viel Erfolg!
     
    maceis, 26.10.2004
  9. Agmemon

    AgmemonMacUser Mitglied

    Mitglied seit:
    05.11.2003
    Beiträge:
    172
    Zustimmungen:
    0
    Prinzipiell kannst Du jede Scriptsprache nutzen: Perl, AWK, Ruby, usw.

    Such dir einfach was aus, was Dir gefällt. Ich persönlich würde sagen, das Du es mit Ruby am schnellsten hinbekommst, da man sich da sehr schnell eingearbeitet hat.
     
    Agmemon, 26.10.2004
  10. UdoN

    UdoNMacUser Mitglied

    Mitglied seit:
    18.06.2004
    Beiträge:
    236
    Zustimmungen:
    0
    Faulheit siegt ;)

    Code:
    for (grep {-f} glob "$dir/*.txt")
    {
    my $text = `cat $_`;
    ...
    udo
     
Die Seite wird geladen...
Ähnliche Themen - Text Dateien umbenennen
  1. msg
    Antworten:
    7
    Aufrufe:
    368
    chris25
    22.02.2017
  2. Macmini2
    Antworten:
    3
    Aufrufe:
    636
    devrandom
    13.02.2013
  3. DropEater
    Antworten:
    6
    Aufrufe:
    1.767
    DropEater
    28.07.2012
  4. xcode42
    Antworten:
    7
    Aufrufe:
    565
    redweasel
    27.03.2012
  5. TINOOO
    Antworten:
    12
    Aufrufe:
    1.831
    Graumagier
    10.07.2011