Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Shell soll alle Dateien eines Verzeichnisses fortlaufend nummerieren

  1. #1
    Registrierter Benutzer Avatar von CaptainAlphabet
    Registriert seit
    27.11.2003
    Ort
    /lost+found
    Beiträge
    39

    Shell soll alle Dateien eines Verzeichnisses fortlaufend nummerieren

    Bestimmt könnt ihr mir bei einem kleinen Shell Script behilflich sein. Ich möchte, dass alle Dateien eines Verzeichnisses, mit Ausnahme der Unterordner, wie folgt umbenannt werden: 0001.jpg, 0002.jpg, 0003.jpg,...

    Das Problem ist, dass ich nicht weiß, wie ich die Ausgabe von "ls" als Parameter an eine Schleife übergebe und wie die Dateinamen immer um 1 erhöht werden.
    For me code has more in common with poetry or some kind of writing. The beauty of
    it is in structure, in putting ideas across, one at the time and clear it away. - Alan Cox

  2. #2
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571

    Re: Shell soll alle Dateien eines Verzeichnisses fortlaufend nummerieren

    Original geschrieben von CaptainAlphabet Das Problem ist, dass ich nicht weiß, wie ich die Ausgabe von "ls" als Parameter an eine Schleife übergebe und wie die Dateinamen immer um 1 erhöht werden. [/B]
    arrrrggg, vergiss ls und nimm find.
    Code:
    find . -iname "*.jpg" -maxdepth 0 -exec machwas.sh {} \;
    sollte dein Freund sein. Die Klammern {} werden zur Laufzeit durch die gefundene Datei ersetzt. Dann wird bei jedem Treffer das shellscript machwas.sh aufgerufen. Aber vorsicht, wenn die Dateinamen Leerzeichen enthalten. Mit
    Code:
    a=1
    a=$(expr $a + 2)
    kann man in der Shell rechnen

    Einen andere Variante wäre der awk. Erst ein Liste der Dateien erstellen und diese dann Zeile für Zeile abarbeiten. Braucht sicherlich etwas Einarbeitungszei, ist aber eine sehr reizfolle Aufgabe. Hat vor allen dingen einen so schönen printf - Befehl, mit dem man sehr gut Zahlen formatieren kann.

    gerade noch gesehen
    Code:
    [hans@rosi hans]$ printf "%05d\n" 3
    00003
    [hans@rosi hans]$
    Geht in der bash also auch!

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

  3. #3
    Registrierter Benutzer
    Registriert seit
    20.04.2001
    Beiträge
    79
    Morgen,
    es gibt in der Bash die Möglichkeit eine For-Schleife zu machen wie sie aus C usw. bekannt ist. Du kannst aber auch mit for i in $(ls); do die Inhalte eines Verzeichnisses in i einlesen und weiterverarbeiten.

    Grüßle
    oafish

  4. #4
    Registrierter Benutzer
    Registriert seit
    20.02.2004
    Ort
    Boeblingen
    Beiträge
    90
    oder einfach ein
    Code:
    a=0
    ls | while read line
    do 
    a=$(expr $a +a)
    mv $line $a
    done
    eventuell noch endungen anfuegen...

Lesezeichen

Berechtigungen

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