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=1
Tím se inicializuje proměnná
n
do 1. -
for f in *.txt; do
Tí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 sn
jako počítadlo.++
symbol říká bashovi, aby inkrementoval proměnnoun
. -
done
To 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?