Efektívny Bash skript na automatizované premenovanie obrázkov s číslovacím systémom
Praktický Bash skript na hromadné premenovanie obrázkov s jednotným pomenovaním a číslovaním.
Skript umožňuje rýchle a bezpečné premenovanie všetkých obrázkov v priečinku na jednotný formát:
[NÁZOV]_1.jpg
[NÁZOV]_2.jpg
[NÁZOV]_3.jpg
Výhody:
.jpg, .JPG, .png, .PNG atď.) 1#!/bin/bash
2
3# Nastavenie názvu kategórie a počítadla
4NAZOV="Zima-2025"
5POCITADLO=1
6
7# Prechádzanie všetkých .jpg a .png súborov v aktuálnom priečinku
8for subor in *.{jpg,jpeg,png,JPG,JPEG,PNG}; do
9 # Overenie, či súbor naozaj existuje (ochrana pred prázdnym priečinkom)
10 [ -f "$subor" ] || continue
11
12 # Získanie prípony súboru
13 pripona="${subor##*.}"
14
15 # Premenovanie na nazov_1.jpg, nazov_2.jpg atď.
16 mv "$subor" "${NAZOV}_${POCITADLO}.${pripona}"
17
18 echo "Premenované: $subor -> ${NAZOV}_${POCITADLO}.${pripona}"
19 ((POCITADLO++))
20done
21
22echo "Hotovo!"
| Riadok | Operácia | Popis |
|---|---|---|
NAZOV="Zima-2025" |
Inicializácia | Definuje prefix pre všetky súbory |
POCITADLO=1 |
Counter | Počítadlo počínajúce od 1 |
for subor in *.{...} |
Loop | Prechádzanie všetkých podporovaných formátov |
[ -f "$subor" ] || continue |
Bezpečnosť | Overenie existence súboru; ak neexistuje, skip |
pripona="${subor##*.}" |
Extrakcia | Odstránenie všetkého pred poslednou bodkou |
mv "$subor" ... |
Premenovanie | Presun so novým menom |
((POCITADLO++)) |
Inkrementácia | Zvýšenie počítadla o 1 |
*.{jpg,jpeg,png,JPG,JPEG,PNG}Tento pattern pokrýva všetky kombinácie:
.jpg, .jpeg, .png.JPG, .JPEG, .PNGPoznámka: Vyžaduje shopt -s nullglob (v novších verziách Bash) alebo bezpečnostnú kontrolu [ -f ].
${subor##*.}Použitie Parameter Expansion:
${premenná##*SEPARATOR} = odstráni všetko OD ZAČIATKU až po separatormoja_fotka.jpg → jpgAlternatíva (s sed):
1pripona=$(echo "$subor" | sed 's/.*\.//')
[ -f "$subor" ] || continueAk je priečinok prázdny:
*.jpg ako string (nie ako súbor)mv skunčil s chybou 1# 1. Skript ulož do súboru
2nano batch_rename.sh
3
4# 2. Pridaj práva na spustenie
5chmod +x batch_rename.sh
6
7# 3. Prejdi do priečinku s obrázkami
8cd ~/Pictures/dovolenka
9
10# 4. Spusti skript
11~/path/to/batch_rename.sh
Pred spustením:
IMG_001.JPG
IMG_0024.jpg
Photo_summer.png
vacation-photo.PNG
Po spustení s NAZOV="Dovolenka-2026":
Dovolenka-2026_1.JPG
Dovolenka-2026_2.jpg
Dovolenka-2026_3.png
Dovolenka-2026_4.PNG
1NAZOV="Narodeniny-Jana" # Akýkoľvek text bez medzier
1for subor in *.{jpg,jpeg,png,JPG,JPEG,PNG,tiff,TIFF,webp,WEBP,bmp,BMP}; do
1POCITADLO=0 # Prvý súbor bude mať príponu _0
Ak chceš Zima_001.jpg namiesto Zima_1.jpg:
1mv "$subor" "${NAZOV}_$(printf "%03d" $POCITADLO).${pripona}"
Výsledok: Zima_001.jpg, Zima_002.jpg, Zima_003.jpg
| Tip | Postup |
|---|---|
| Testovanie bez zmien | Nahraď mv za echo mv pre suchý beh |
| Záloha pred spustením | cp -r ~/Pictures/dovolenka ~/Pictures/dovolenka.bak |
| Zmeň názov postupne | Vypracuj kópiu skriptu a testuj s malou vzorkou |
| Reverzibilita | Ponechaj si pôvodné mená pre referenciu |
Ak skript nefunguje, skontroluj:
1# 1. Syntax check
2bash -n batch_rename.sh
3
4# 2. Verbózny mód
5bash -x batch_rename.sh
6
7# 3. Overenie prístupových práv
8ls -la ~/Pictures/dovolenka
9
10# 4. Echo loop
11for subor in *.jpg; do echo "$subor"; done
Verzia: 1.0 | Dátum: 2026-08-11 | Jazyk: Bash