Schlagwort: bash

  • Führende Nullen in Dateinamen unter Linux hinzufügen

    Wenn Sie viele Dateien haben, die durchnummeriert sind, aber ohne führende Nullen, kann die Sortierung manchmal durcheinander geraten. Ein typisches Beispiel könnte eine Sammlung von Bilddateien sein, die als img_1.jpg, img_2.jpg, img_100.jpg usw. nummeriert sind. In diesem Fall wird img_100.jpg vor img_2.jpg sortiert, da die Sortierung als Zeichenkette und nicht numerisch erfolgt.

    Dieses Problem lässt sich lösen, indem man ein einfaches Bash-Skript verwendet, das durch alle Dateien geht und diejenigen umbenennt, die weniger als eine bestimmte Anzahl von Ziffern in ihrem Namen haben, in unserem Fall drei. Hier ist, wie Sie das tun können:

    for file in img_*.jpg; do
        # Extrahiere die Nummer aus dem Dateinamen
        num=$(echo $file | grep -o -E '[0-9]+')
    
        # Überprüfe, ob die Nummer weniger als 3 Stellen hat
        if [ ${#num} -lt 3 ]; then
            # Füge führende Nullen hinzu, um die Länge auf 3 zu bringen
            new_num=$(printf "%03d" $num)
    
            # Generiere den neuen Dateinamen
            new_file="img_${new_num}.jpg"
    
            # Umbenennen der Datei
            mv $file $new_file
        fi
    done
    

    Dieses Skript extrahiert den numerischen Teil jedes Dateinamens, prüft seine Länge und fügt gegebenenfalls führende Nullen hinzu, um die Länge auf drei Stellen zu bringen. Es ignoriert Dateien, die bereits eine dreistellige Nummer haben.

    Bitte beachten Sie, dass das Skript davon ausgeht, dass alle Ihre Dateien im Format img_N.jpg vorliegen, wobei N eine Zahl ohne führende Nullen ist. Wenn Ihr Dateiformat abweicht, müssen Sie das Skript entsprechend anpassen.

    Zudem sollten Sie beachten, dass dieses Skript keine Sicherheitsmaßnahmen implementiert, um sicherzustellen, dass keine Dateien überschrieben werden. Stellen Sie daher sicher, dass Sie eine Sicherungskopie Ihrer Dateien haben, bevor Sie das Skript ausführen.