GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash-Datei Massenumbenennung mit Zähler?

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 mit n als Zähler. Der ++ Symbol weist Bash an, die Variable n 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.


Linux
  1. Hinzufügen eines Zeitstempels zu einem Dateinamen mit mv in BASH

  2. Wie überprüfe ich, ob eine Datei in Bash leer ist?

  3. Alle Ausgaben mit Bash unter Linux in eine Datei umleiten?

  4. Echotext mit neuer Zeile in Bash

  5. Eine Datei, deren Name mit einem Bindestrich beginnt, kann nicht umbenannt werden

Bash:In Datei schreiben

Bash-Quellbefehl

Bash:An Datei anhängen

Bash-Umleitung mit Beispielen erklärt

Wie man mit Hardlinks und Softlinks unter Linux arbeitet

In .txt-Datei schreiben?