Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Zeichenkette am Anfang des Dateinamens entfernen

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.02.2002
    Ort
    2nd level cache
    Beiträge
    90

    Question Zeichenkette am Anfang des Dateinamens entfernen

    Hi!

    Ich hab zwar schon die Suchfunktion bemüht, aber gerade hierzu gabs nichts passendes:

    Ich habe mehrer Dateien in einem Verzeichnis liegen, deren Dateinamen alle mit der gleichen Zeichenkette beginnen, aber unterschiedliche Endungen haben.

    Könnte mir mal jemand einen Denkanstoß für ein Skript geben, mit dem ich von beliebig vielen Dateien in einem Verzeichnis den Anfang des Dateinamens, der immer gleich lautet, abschneiden kann?

    GreetZ

    ReSeT
    Einmal schwarzen Tee mit Milch und Zucker bitte!

  2. #2
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231

    Vielleicht

    Code:
    #!/usr/bin/perl -w
    $path="/hier/liegen/die/Dateien/";
    $ls =`ls $path`;
    @ls = split(/\s+/,$ls);
    foreach(@ls){
        $a =$_;
        if($_ =~ /xxx.*/){ 
            $_ =~ s/xxx//g;
            $b = $_;
            system("mv $a $b");
        }
    }
    exit 0;
    xxx ist natuerlich die "gleichen Zeichenkette"


    T;o)Mes
    ************************************************
    Man(n oder Frau) muss nicht alles wissen,
    Man(n oder Frau) muss nur wissen wo es steht !
    ************************************************
    http://www.sandtom.net
    ICQ 176436259

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.02.2002
    Ort
    2nd level cache
    Beiträge
    90
    Danke, leider habe ich noch das Problem, daß die Zeichenkette Leerzeichen enthält und Perl das wohl nicht als einzelne Zeichenkette erkennt.

    Was nun?
    Einmal schwarzen Tee mit Milch und Zucker bitte!

  4. #4
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Ich habe zwar keine Ahnung von Perl, aber ich denke du mußt jedes Leerzeichen mit \ (Backslash) maskieren.

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  5. #5
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Stopp, Kommando zurück, das scheint mir auch nicht richtig zu sein.

    Mit ls bekommst du die Verzeichnisse in einer Zeichnkette gelistet, getrennt durch ein Leerzeichen? Dannkann das so glaube ich nicht gehen. Ich muß passen!
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  6. #6
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231

    Dann vielleicht

    ls -l | awk '{print $9}' in eine File umleiten, oder nach $9 irgendwelche nicht vorkommende Zeichen und dann danach splitten oder oder oder
    Du wolltest doch nur ein Denkanstoss

    T;o)Mes
    Geändert von tomes (17-01-2003 um 20:27 Uhr)
    ************************************************
    Man(n oder Frau) muss nicht alles wissen,
    Man(n oder Frau) muss nur wissen wo es steht !
    ************************************************
    http://www.sandtom.net
    ICQ 176436259

  7. #7
    Registrierter Benutzer
    Registriert seit
    25.02.2002
    Ort
    2nd level cache
    Beiträge
    90
    Stimmt, das mit dem Denkantoß sagte ich

    Ich werd mich mal daran versuchen, wobei ich eigentlich mit Perl noch nichts am Hut hatte. Aber einmal ist immer das erste Mal.

    Oder bau ich ein kleines C-Programm?

    Auf jeden Fall Danke erstmal
    Einmal schwarzen Tee mit Milch und Zucker bitte!

  8. #8
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231

    ;)

    Na ja, der *Denkanstoss* ist ja nun da
    Wie geschrieben bekommst du mit dem "ls | awk ... $9" eine Liste der Files, die Ausgabe einfach in tmp-File umleiten ( > /tmp/FILE ) und dann mit
    Code:
    open(AA,"</tmp/FILE");
    foreach(<AA>){
    	....
    	hier passiert dann das was oben schon steht 
    }
    close(AA);
    system("rm /tmp/FILE");
    Auch wuerde sich das Pakete File::Find dafuer gut eignen.
    http://search.cpan.org/author/JHI/pe...b/File/Find.pm

    T;o)MEs
    ************************************************
    Man(n oder Frau) muss nicht alles wissen,
    Man(n oder Frau) muss nur wissen wo es steht !
    ************************************************
    http://www.sandtom.net
    ICQ 176436259

  9. #9
    Registrierter Benutzer
    Registriert seit
    26.12.2002
    Ort
    Matrix
    Beiträge
    194

    Re: Zeichenkette am Anfang des Dateinamens entfernen

    Original geschrieben von ReSeT

    Ich habe mehrer Dateien in einem Verzeichnis liegen, deren Dateinamen alle mit der gleichen Zeichenkette beginnen, aber unterschiedliche Endungen haben.

    Könnte mir mal jemand einen Denkanstoß für ein Skript geben, mit dem ich von beliebig vielen Dateien in einem Verzeichnis den Anfang des Dateinamens, der immer gleich lautet, abschneiden kann?
    $ ls -1
    abc123
    abc234
    abc345
    $ for F in abc*; do mv "${F}" "${F##*abc}; done
    $ ls -1
    123
    234
    345

    -j

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •