Anzeige:
Ergebnis 1 bis 7 von 7

Thema: dateien umbennen

  1. #1
    tömml
    Gast

    Question dateien umbennen

    Hallo,
    ich bin ein absoluter neuling in scripting.
    ich möchte ein bash script schreiben, welches mir dateien aus einem verzeichnis (circa 1000 .txt dateien) umbenennt, mit der hand die umzubennen dauert doch zu lange, daher such ich nach einem script was mir das automatisch für alle dateien in dem verzeichnis macht.
    die dateien sehen folgendermaßen aus:
    bla_1.txt
    bla_2.txt
    ..
    bla_768.txt
    ...
    bla_1535.txt

    was ich quasi erreichen will ist, dass ich die dateien so benennen kann, dass sie danach im verzeichniss nach namen geordnet erscheinen, also quasi mit "führenden" nullen vor den zahlen im datei-namen. heißt, dass die dateien nach der umbenennung folgendermaßen aussehen;
    bla_0001.txt
    bla_0002.txt
    ..
    bla_0768.txt
    ...
    bla_1535.txt

    Ich brauch die dateien im verzeichnis in der richtigen reihenfolge, da ich später den inhalt der dateien der reihe nach in eine .txt schreiben möchte (dies dann auch mit einem script).

    ich hoffe mir kann jemand helfen wie ich das anstelle.
    oder gibt es eine möglichkeit die datein in einem verzeichnis so zu ordnen, dass ich sie der reihenfolge (0,1,2,3...) mit einem script bearbeiten kann?
    ich arbeite mit SuSE Linux 10.0

    vielen dank im voraus.
    gruß
    ts

  2. #2
    Registrierter Benutzer
    Registriert seit
    05.02.2006
    Beiträge
    116
    Code:
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    my $directory = '/path/to/directory/';
    opendir(DIR,$directory) or die $!;
    my @files = grep{-f $directory.$_ && $_ =~ /bla_\d+\.txt/}readdir(DIR);
    closedir DIR;
    
    for my $file(@files){
        my ($nr) = $file =~ /bla_(\d+)\.txt/;
        my $tmp = $file;
        $nr = sprintf("%04d",$nr);
        $file = s/\d+/$nr/;
        rename $tmp,$file;
    }

  3. #3
    tömml
    Gast
    @reneeb

    danke für die schnelle antwort.

    zwei kleine fragen habe ich noch:

    1. wie mache ich das perl script ausführbar? auch mit "chmod u+x" ? der name des programm sollte dann auch *.bash sein, oder?
    2. wenn ich es dann in der konsole ausführe, ist es egal in welchem verzeichnis ich dann bin? habe my $directory = '~/Studienarbeit/MB2flit/test'; so angegeben? funktioniert das dann, z.b. wenn ich mich in eben diesem verzeichnis befinde?

    gruß
    ts

  4. #4
    tömml
    Gast
    noch ein nachtrag:

    habe das file ausführbar gemacht mit chmod (hat einwandfrei funktioniert).

    folgende änderung habe ich zu meine letzen beitrag übernommen:
    "my $directory = '../../home/schroeder/Studienarbeit/MB2flit/test';"

    wenn ich das script nun in der konsole in meinem home-verzeichnis ausführe, bekomme ich auch keine fehlermeldung mehr (vorher konnte er my directory nicht öffnen ) und er führt das script scheinbar aus, allerdings geht das ziemlich schnell und wenn ich mir dann die dateien in meinem test verzeichnis anschaue sind keine änderungen im dateinamen zu sehen.

    mach ich was falsch?

    danke
    gruß
    ts

  5. #5
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von tömml Beitrag anzeigen
    noch ein nachtrag:
    mach ich was falsch?

    danke
    gruß
    ts
    Vielleicht hat Perl in diesem Verzeichnis keine Schreib + Leserechte?
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  6. #6
    tömml
    Gast
    @Romanday

    das mit den schreib+leserechten könnte natürlich sein. wo kann ich das für perl definieren? oder muss ich einfach die rechte der datein ändern?

  7. #7
    Registrierter Benutzer
    Registriert seit
    05.02.2006
    Beiträge
    116
    Da musst Du die Rechte der Datei ändern... Oder das Perl-Skript unter einem anderen Nutzer laufen lassen.

    Du kannst auch erstmal Testausgaben in das Skript einbauen. Ich habe es nur auf die Schnelle getippt...

Lesezeichen

Berechtigungen

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