Ich möchte alle Dateien in einem Ordner mit PREFIX+COUNTER+FILENAME
umbenennen
zum Beispiel
Eingabe:
england.txt
canada.txt
france.txt
Ausgabe:
CO_01_england.txt
CO_02_canada.txt
CO_03_france.txt
Akzeptierte Antwort:
Dies tut, was Sie fragen:
n=1; for f in *.txt; do mv "$f" "CO_$((n++))_$f"; done
Wie es funktioniert
-
n=1
Dadurch wird die Variable
n
initialisiert zu 1. -
for f in *.txt; do
Dies startet eine Schleife über alle Dateien im aktuellen Verzeichnis, deren Namen auf
.txt
enden . -
mv "$f" "CO_$((n++))_$f"
Dadurch werden die Dateien so umbenannt, dass sie den
CO_
haben Präfix mitn
als Zähler. Der++
Symbol weist Bash an, die Variablen
zu inkrementieren . -
done
Dies signalisiert das Ende der Schleife.
Verbesserung
Diese Version verwendet printf
Dies ermöglicht eine bessere Kontrolle darüber, wie die Zahl formatiert wird:
n=1; for f in *.txt; do mv "$f" "$(printf "CO_%02i_%s" "$n" "$f")"; ((n++)); done
Insbesondere der %02i
format setzt eine führende Null vor die Zahl, wenn n
liegt immer noch im einstelligen Bereich.