Hromadné premenovanie obrázkov

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.

Prehľad skriptu

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:

  • Automatické číslovanie
  • Zachovanie pôvodných prípony súborov
  • Case-insensitive (podporuje .jpg, .JPG, .png, .PNG atď.)
  • Bezpečnosť: ochrana pred prázdnymi priečinkami
  • Jednoduchý a preto ľahko prispôsobiteľný

Kompletný kód skriptu

 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!"

Ako funguje skript - Krok za krokom

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

Technické detaily

Glob pattern *.{jpg,jpeg,png,JPG,JPEG,PNG}

Tento pattern pokrýva všetky kombinácie:

  • Malé písmená: .jpg, .jpeg, .png
  • Veľké písmená: .JPG, .JPEG, .PNG

Poznámka: Vyžaduje shopt -s nullglob (v novších verziách Bash) alebo bezpečnostnú kontrolu [ -f ].

Extrakcia prípony: ${subor##*.}

Použitie Parameter Expansion:

  • ${premenná##*SEPARATOR} = odstráni všetko OD ZAČIATKU až po separator
  • V tomto prípade: moja_fotka.jpgjpg

Alternatíva (s sed):

1pripona=$(echo "$subor" | sed 's/.*\.//')

Bezpečnosť: [ -f "$subor" ] || continue

Ak je priečinok prázdny:

  • Loop sa pokúša spracovať *.jpg ako string (nie ako súbor)
  • Bez tejto kontroly by mv skunčil s chybou
  • S touto kontrolou: skript bezpečne skončí

Praktické použitie

Základný postup

 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

Príklad - Cyklus obrázkov

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

Prispôsobenie skriptu

Zmena názvu kategórie

1NAZOV="Narodeniny-Jana"  # Akýkoľvek text bez medzier

Podpora ďalších formátov (TIFF, WebP, BMP)

1for subor in *.{jpg,jpeg,png,JPG,JPEG,PNG,tiff,TIFF,webp,WEBP,bmp,BMP}; do

Počítadlo od 0 namiesto od 1

1POCITADLO=0  # Prvý súbor bude mať príponu _0

Úprava výstupu s vedúcimi nulami

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

Bezpečnostné tipy

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

Debugovanie

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

Zdroje


Verzia: 1.0 | Dátum: 2026-08-11 | Jazyk: Bash