Text Dateien umbenennen Aufgrund vom Inhalt

Diskutiere mit über: Text Dateien umbenennen Aufgrund vom Inhalt im Mac OS X Entwickler, Programmierer Forum

  1. Atomitanz

    Atomitanz Thread Starter MacUser Mitglied

    Beiträge:
    67
    Zustimmungen:
    0
    Registriert seit:
    15.01.2004
    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
     
  2. Placebo

    Placebo Banned

    Beiträge:
    210
    Zustimmungen:
    0
    Registriert seit:
    24.10.2004
    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.
     
  3. UdoN

    UdoN MacUser Mitglied

    Beiträge:
    236
    Zustimmungen:
    0
    Registriert seit:
    18.06.2004
    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
     
  4. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    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.
     
  5. calinux

    calinux MacUser Mitglied

    Beiträge:
    64
    Zustimmungen:
    0
    Registriert seit:
    28.09.2004
    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
     
  6. Atomitanz

    Atomitanz Thread Starter MacUser Mitglied

    Beiträge:
    67
    Zustimmungen:
    0
    Registriert seit:
    15.01.2004
    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
     
  7. canfAN

    canfAN MacUser Mitglied

    Beiträge:
    66
    Zustimmungen:
    0
    Registriert seit:
    06.02.2003
    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
     
  8. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    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!
     
  9. Agmemon

    Agmemon MacUser Mitglied

    Beiträge:
    172
    Zustimmungen:
    0
    Registriert seit:
    05.11.2003
    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.
     
  10. UdoN

    UdoN MacUser Mitglied

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

    Code:
    for (grep {-f} glob "$dir/*.txt")
    {
    my $text = `cat $_`;
    ...
    udo
     
Die Seite wird geladen...
Ähnliche Themen - Text Dateien umbenennen Forum Datum
Sublime Text 2 kostenpflichtig? Mac OS X Entwickler, Programmierer 13.02.2013
Xcode Button & Text View Mac OS X Entwickler, Programmierer 26.07.2012
Mac OS X: Text in TextView schreiben Mac OS X Entwickler, Programmierer 27.03.2012
Text und so in xCode einbauen Mac OS X Entwickler, Programmierer 05.07.2011
Text Field neue Zeile? Mac OS X Entwickler, Programmierer 30.03.2011

Diese Seite empfehlen

Benutzerdefinierte Suche