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=1Dadurch wird die Variable
ninitialisiert zu 1. -
for f in *.txt; doDies startet eine Schleife über alle Dateien im aktuellen Verzeichnis, deren Namen auf
.txtenden . -
mv "$f" "CO_$((n++))_$f"Dadurch werden die Dateien so umbenannt, dass sie den
CO_haben Präfix mitnals Zähler. Der++Symbol weist Bash an, die Variablenzu inkrementieren . -
doneDies 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.