Chci přejmenovat všechny soubory ve složce pomocí PREFIX+COUNTER+FILENAME
například
vstup:
england.txt
canada.txt
france.txt
výstup:
CO_01_england.txt
CO_02_canada.txt
CO_03_france.txt
Přijatá odpověď:
Toto dělá to, co požadujete:
n=1; for f in *.txt; do mv "$f" "CO_$((n++))_$f"; done
Jak to funguje
-
n=1Tím se inicializuje proměnná
ndo 1. -
for f in *.txt; doTím se spustí smyčka přes všechny soubory v aktuálním adresáři, jejichž názvy končí
.txt. -
mv "$f" "CO_$((n++))_$f"Tím se přejmenují soubory tak, aby měly
CO_prefix snjako počítadlo.++symbol říká bashovi, aby inkrementoval proměnnoun. -
doneTo signalizuje konec smyčky.
Vylepšení
Tato verze používá printf což umožňuje větší kontrolu nad tím, jak bude číslo formátováno:
n=1; for f in *.txt; do mv "$f" "$(printf "CO_%02i_%s" "$n" "$f")"; ((n++)); done
Konkrétně %02i format vloží před číslo úvodní nulu, když n je stále jednomístný.
Vložte oba znaky, pokud není rozpoznána mrtvá kombinace kláves (např. ‚a → á, ‚b → ‚b)?
Proč Sudo ignoruje aliasy?