Hromadné přejmenování skenů: bezpečný postup
Jak navrhnout názvy pro archivní skeny, zkontrolovat kolize a připravit plán přejmenování bez zásahu do souborů.
4 minuty čtení
Název má dovést zpět ke snímku
Stažený snímek bez popisu se po čase hledá špatně. Dobré jméno souboru nemusí vyprávět celý příběh, mělo by ale umožnit poznat knihu, snímek a stručný obsah. Cestu od archivu k vlastní kopii popisuje článek Jak si uložit skeny z archivu. Přejmenování je až další krok, nikdy náhrada odkazu na původní zobrazení.
Než změníte jediný soubor, rozhodněte se pro jeden vzor a vyzkoušejte jej na několika příkladech. Může vypadat takto:
farnost-B_kniha-02_snimek-045_krest-Jana-N.jpg
Použijte jen údaje, které skutečně znáte. Pokud neznáte obsah snímku, nesnažte se jej uhádnout z pořadí souborů. Označení knihy a číslo snímku je často užitečnější než dlouhý popis. Ve veřejně sdílené složce navíc nenechávejte jména nebo údaje žijících lidí.
Plán dřív než změna
Hromadné přejmenování může poškodit orientaci v souborech, pokud se dva cílové názvy shodují nebo pokud název již existuje. Proto nejprve sestavte plán: dvojici původní název a navržený nový název pro každý soubor. Nic nepřejmenovávejte, dokud plán ručně neprojdete.
Plán kontrolujte ve třech směrech. Za prvé, každý nový název musí být v plánu jedinečný. Za druhé, nesmí se shodovat s žádným souborem, který v cílové složce už je. Za třetí, ověřte, že žádný navržený název neodkazuje omylem na jinou knihu nebo snímek. Když najdete jediný problém, opravte plán a proveďte celou kontrolu znovu.
Pracujte na kopii malé, jasně oddělené části sbírky. Originály, odkaz na archiv a původní názvy zachovejte. Převodní tabulku ukládejte až poté, co ověříte, že pro ni máte nový, nepoužitý název. Sama tabulka nesmí přepsat dřívější soubor.
Kontrolní skript, který na disk nezapisuje
Následující ukázka pouze vytiskne plán. Nic nemaže, nepřejmenovává ani nezapisuje. Před případným použitím si změňte cestu a zkontrolujte, že ukazuje na kopii souborů. Číslo snímku nemusí být poslední číslo v názvu - za ním může stát třeba signatura knihy. Výchozí vzor v ukázce sedí na jeden takový tvar (číslo snímku před slovem „sign"), jiný archiv může soubory pojmenovávat jinak. Nastavte proto vzor podle svých souborů a přečtěte si kontrolní výpis.
from pathlib import Path
import re
adresar = Path("zkusebni_kopie")
predpona = "farnost-B_kniha-02_snimek-"
vzor_cisla = re.compile(r"_(\d+)_sign(?:-|$)") # Upravte podle názvů ve vašem archivu.
soubory = [p for p in adresar.iterdir() if p.is_file() and p.suffix.lower() == ".jpg"]
plan = []
bez_cisla = []
for soubor in soubory:
shoda = vzor_cisla.search(soubor.stem)
if not shoda:
bez_cisla.append(soubor.name)
continue
cislo = int(shoda.group(1))
plan.append((cislo, soubor.name, f"{predpona}{cislo:03d}{soubor.suffix.lower()}"))
plan.sort()
existujici = {p.name for p in adresar.iterdir()}
cisla_snimku = [cislo for cislo, _, _ in plan]
kolize_v_planu = len(cisla_snimku) != len(set(cisla_snimku))
kolize_v_adresari = any(novy in existujici and novy != stary for _, stary, novy in plan)
for cislo, stary, _ in plan[:3]:
print(f"Kontrola vzoru: {stary} -> číslo snímku {cislo}")
if kolize_v_planu:
raise SystemExit("Stejné číslo snímku u více souborů: vzor asi nevybírá číslo snímku. Nic nebylo změněno.")
if kolize_v_adresari:
raise SystemExit("Kolize názvů: nic nebylo změněno.")
for stary in bez_cisla:
print(f"{stary}: vzor nesedí, doplnit ručně do tabulky")
for _, stary, novy in plan:
print(f"{stary} -> {novy}")
Ukázka nevytváří ani převodní tabulku. Zobrazený seznam si nejprve zkontrolujte. Teprve pak jej můžete ručně uložit pod novým názvem, který jste ověřili jako neobsazený, nebo zadat odborníkovi další krok. Přejmenovací příkaz nesmí být přidán jen proto, že náhled vypadá správně.
Kontrolní skript neprovádějte v místě, kde máte jedinou kopii sbírky. Ani náhled sice soubory nemění, ale špatně zvolená cesta může vypsat jiné soubory, než jste čekali. Nejdřív ověřte, že seznam obsahuje jen očekávané názvy a že počet řádků odpovídá vybranému vzorku.
Je také rozumné ponechat původní archivní identifikátor v poznámce nebo v převodní tabulce. Samotný nový název má usnadnit práci, nemá přerušit cestu zpět k původu snímku.
Co zkontrolovat ručně
Pořadí získané ze seznamu souborů nemusí odpovídat pořadí snímků v knize. Ani číslo v názvu nemusí být číslo snímku: ověřte v kontrolním výpisu, že vzor vybral opravdu je. Pokud původní názvy neobsahují spolehlivé číslování, nejprve vyrobte vlastní tabulku se sloupci původní název, označení knihy, snímek a navržený název. Teprve z ní může vzniknout plán.
Zachovejte příponu souboru. Přejmenování není převod formátu a nemá měnit obsah souboru. U souborů s různými příponami si ověřte, zda je vůbec chcete zpracovat společně. Stejně tak nezakrývejte chybu v názvu rychlým dalším hromadným během. Zastavte se, opravte tabulku a znovu porovnejte všechny dvojice.
Model může pomoci vytvořit návrh tabulky nebo projít pravidla pojmenování. Nezná však význam vašich souborů a nevidí, zda cesta ukazuje na správnou složku. Nechte jej navrhovat, ale kontrolu názvů a konečné rozhodnutí držte u sebe.
Věcný závěr
Bezpečné přejmenování začíná čitelným vzorem, pokračuje plánem bez kolizí a končí teprve po ruční kontrole. Dokud nemáte ověřený plán, je správným výsledkem nulová změna souborů. Pořádek ve sbírce nevzniká rychlostí, ale možností dohledat každý snímek zpět k jeho původu.