Portál AbcLinuxu, 1. května 2025 17:27
Dostal jsem se do situace, kdy mám na pevném disku minimálně desítky souborů, které ve svém názvu obsahují problémové znaky. Ručně je přejmenovávat by mi zabralo hromadu času. Ale taky proč to dělat, když existuje program detox
.
Program detox slouží k (hromadnému) přejmenování souborů — odstraňuje z jmen souborů mezery a jiné problémové znaky.
Pojem sekvence vyjadřuje sérii filtrů, podle kterých bude progarm detox přejmenovávat jednotlivé soubory.
Program detox
, jeho konfigurační soubory (/etc/detox/detoxrc
a ~/.detoxrc
) a převodní tabulky tvoří celek potřebný pro správnou funkci přejmenovávání souborů.
Pro začátek je asi nejdůležitější volba -Lv
, která nám zobrazí aktuálně dostupné sekvence plus zobrazí všechny filtry, které jednotlivé sekvence obsahují.
Podle mě nejdůležitější volbou je -s sekvence
, která způsobí, že program detox nepoužije na přejmenování sekvenci default
, nýbrž použije sekvenci sekvence
.
Přejmenovávání "nanečisto" umožňuje volba -n --dry-run
, díky níž zjistíme, co by se stalo. Tato volba tedy nemění nic.
Normálně existují dva konfigurační soubory — /etc/detox/detoxrc
(globální konfigurační soubor) plus každý uživatel může mít svůj konfigurační soubor ~/.detoxrc
. Na příkladě budu vysvětlovat:
sequence "utf_8" { utf_8; safe; wipeup; };
Tento příklad vytváří (definuje) sekvenci utf_8
obsahující filtry (sekvence), které budou aplikovány při přejmenovávání souborů. Dále popíšu podle mě důležité filtry (sekvence):
Převede Unicode (UTF-8) znaky na "bezpečné ekvivalenty". /path/to/filename
je textový soubor obsahující informace pro převod znaků. Vynecháme-li filename "/path/to/filename"
, bude program detox hledat unicode.tbl
.
Převede znaky, které by dělaly problémy v systémech UNIX(-like), na znaky, které problémy v UNIX(-like) systémech nedělají.
Více podtržítek nebo pomlček budou převedeny na jedno podtřžítko či pomlčku. Série pomlček a podtržítek bude převedena na jednu pomlčku. remove_trailing
způsobí odstranění pomlčky či podtržítka, které jsou následovány ihned tečkou.
Ořeže jméno souboru na length
(nebo méně) znaků. Program detox se pokusí zachovat všechno po poslední tečce (tedy zachová příponu souboru).
Program detox převede velká písmena na malá.
Cokoli za znakem '#' je ignorováno.
sequence "default" { utf_8; safe; lower; wipeup; };
Program detox aplikuje na jména souborů postupně filtry (sekvence) utf_8, safe, lower a wipeup. Jedná se o výchozí ("default") sekvenci — pokud tedy výslovně (pomocí -s
) nezvolíte jinou sekvenci, bude použita tato výchozí.
Program detox
umožňuje ovlivnit práci filtrů pomocí převodních tabulek. Viz parametr filename "/path/to/filename"
u filtrů utf_8
, safe
. Pro víc informací viz man detox
, man detoxrc
a man detox.tbl
.
Tiskni
Sdílej:
#! /usr/bin/env python import os spatne = list('''!"#$%&\'()*+,/:;<=>?@[\\]^_`{|}~ ''') repl = "_" for root,dir,files in os.walk(os.getcwd()): for fi in files: for ill in spatne: if ill in fi: print "found ", os.path.join(root,fi) newname = fi.replace(ill,repl) os.rename( os.path.join(root,fi) , os.path.join(root,newname) )až budu něco podobného řešit příště tak detox zkusím.
Díky. Mám v plánu se minimálně základy Pythonu naučit.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.