Korábban felvetettem egy HUP-os topikban, ebben:
http://hup.hu/node/122036
hogy kéne egy program, ami a fájl- és könyvtárnevekből kiiktatja a nem az angol ABC-nek megfelelő karaktereket (és esetleg a szóközt kicseréli aláhúzásjelre), a nem angol karakterek helyére meg berak valamit, mínuszjelet vagy szintén aláhúzásjelet. Ezek a karakterek ugyanis mindig problémákat okoznak a fájlok másolásakor a különböző karakterkódolások, eltérő kódlapok, fájlrendszerek, effélék miatt.
Adtak is ott abban a topikban megoldást a feladatra, de közben a gondot megemlítettem egy a programozáshoz nagyon értő barátomnak, aki nem szokta a HUP-ot látogatni (gondolom nem véletlenül - több esze volt mint nekem...) mondjuk nincs is a HUP-ra szüksége mert irtózatos esze van, igazi szuperhacker! (a hacker-szót jó értelemben értve, azaz nem olyasmiket csinál hogy kiberbűnözés). Olyan dolgokat művel a Linuxszal meg a programozással, hogy csak a számat tátom, némely dolgait meg se értem hogy miről beszél, de amit megértek többnyire azt se tudnám utánacsinálni. Hihetetlenül nagy fej, és feltétel nélkül tisztelem a tudását. De EMBERILEG is egy végtelenül rendes valaki. Különben a Windowshoz is ért, csak nem szereti. Még régebben ő ajánlotta nekem a Linuxot is.
Na és hát ő időközben elkészített e feladatra egy "renamer" nevű parancssoros programot. Az elérhetősége (neve és email-címe) szerepel a forráskód elején. Én voltam a program bétatesztelője. Szerintem tökéletesen működik, de attól hogy ez a véleményem, nem kizárt hogy valami ritkábban használt, kevésbé fontos funkciója valamely extrém kis valószínűségű környezeti feltételek mellett netán "bugot dob". Ilyen esetben ne nekem panaszkodjon senki, hanem a barátomnak, akinek az emailcíme mint mondtam ott van a forrásban.
Na és most a részletek: A program innen tölthető le:
http://sanawad.bplaced.net/program/renamer.rar
A program LGPL licenszű.
Ebben a rar fájlban benne van a forrás is és a bináris is amit én fordítottam magamnak ubuntu 11.10 alá, ez valószínűleg jó egy csomó más disztróhoz is.
A program tartalmaz egy using_hu.txt fájlt, ebben van a használati utasítás. Ezt eredetileg a barátom írta, én kicsit kibővítettem, beleírtam pár dolgot amit ő nem rakott bele de a levélváltásunk során megemlítette és hasznos infónak tartottam. Idemásolom, ebben minden lényeges benne van, aki elolvassa, tudhatja belőle, kell-e neki e program!
root@Csiszilla:/Programs/Renamer/0.0/sources# cat using_hu.txt
Hi!
FIGYELMEZTETÉS!
Se a program készítője nem vállal, se én a közreadója nem vállalok semmiféle garanciát semmiféle a használatból fakadó kárért!
Ésszel kell használni, különben igen könnyen iszonyatos adatvesztés származhat belőle!
-------------------------------------------------------------------------------------------------------------------------------------
Mit csinál ez a program?
Abban a könyvtárban ahol elindítják, és ha nem adjuk meg a --curentdir kapcsolót akkor az összes ezalól nyíló alkönyvtárakban is meg az
azokból nyílókban is, és így tovább, az összes fájlt átnevezi bizonyos megadott szabályok szerint. A cél az "ékezetes", azaz a nem angol abc
szerinti karakterek "kigyomlálása", mert ezek mindenféle problémákat okoz(hat)nak a fájlok átmásolásakor az eltérő
operációs rendszerek, karakterkódolások, fájlrendszerek, stb miatt. Alapértelmezés szerint a program úgy működik, hogy a
magyar ékezetes betűket kicseréli az ékezet nélküli párjukra, és a szóközt az aláhúzásjelre, az összes többi nem az angol abc szerinti karaktert pedig
az aláhúzásjelre cseréli ki, de ez megváltoztatható. Továbbá más behelyettesítések is megtaníthatók a programnak, mindenféle nyelvekre.
A következő karaktereket tekinti fixnek, ezeket tehát nem változtatja: "abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLNMOPQRSTUVWXYZ0123456789-_." .
Amennyiben pl. "$" karaktert nem akarod hogy lecserélje, akkor a
renamer -r"$:$"
paranccsal felveheted a listára. A -r kapcsolóról részletesebben lásd alább.
1.) telepítés
a.) függőségek
A programhoz a Qt 4/5 core és devel csomagok kellenek.
b.) telepítés
Maga a program nem igényel speciális, rendszergazdai jogokat, kivéve
abban az esetben, ha az átnevezendő fájlok és könyvtárak jogai ezt
megkívánják.
menete:
- bontsuk ki a renamer.tar.gz állományt
- lépjünk be a renamer könyvtárba
- qmake parancs futtatása
- make parancs futtatása
Amennyiben minden jó, akkor a létrejövő renamer állományt
mozgassuk, pl. $HOME/bin könyvtárba(OpenSuSE 12.2 alatt, ez
automatikusan bekerül a $PATH változóba).
------------------------------------------------------------------------
Viola Zoltán megjegyzése: Én e programot egy .rar állományban teszem közzé, ennek Renamer/0.0/sources könyvtárában van az összes forrásfájl.
Innen töröljük le a Makefile fájl, majd
qmake
make
De a Renamer/0.0/bin könyvtárban megtalálható az a futtatható állomány is, amit én fordítottam az Ubuntu 11.10 rendszeremhez. Valószínű, hogy ez
a legtöbb Linux-disztribúció esetén rögvest működni fog.
------------------------------------------------------------------------
2.) használata
Az első használat során létrejön egy .renamer könyvtár, az adott felhasználó könyvtárában,
és benne egy renamer.conf állomány, amely fel van
töltve az alapértelmezett cserebeállításokkal a magyar ékezetes betűkhöz. Igény
szerint, a jövőben bármilyen nemzeti alapértelmezett cserebeállításokat
bele tudok illeszteni.
Kapcsolók:
-t vagy --test : nem végez cserét, csak a talált nem szabványos
karaktereket veszi fel a csere táblázatba az
alapértelmezett értékkel.
-f"" vagy --filter="": a megadott
szűrő kifejezésnek megfelelő állományokon végez csak
átnevezést. A kifejezés tartalmazhat listát is,
amelyeket a ";" karakter választ el.
Példa: -f"*.mp3;*.ogg"
A szűrő kifejezést
mindig macskakörmök közzé kell tenni. Használata esetén
a szűrőkifejezést megjegyzi a program(renamer.conf).
-d vagy --default= : a cseretáblázatban
nem szereplő karaktereket erre a kifejezésre cseréli le,
alapértelmezés a "_" jel. Használata esetén a
cserekifejezést megjegyzi a program(renamer.conf).
-u : megjeleníti a kulcsot, és hogy mire cseréli le.
-U : megjeleníti a kulcshoz tartozó karaktert és hogy mire
cseréli le.
-R";<érték>" : beállítja a megadott kulcshoz tartozó
cserekódot. Figyeljünk oda, hogy a kifejezést
macskakörmök közzé kell rakni. Amennyiben a kulcs még
nem volt felvéve, felveszi a megadott értékkel. Az érték
lehet szöveg is.
(A konfigurációs fájlban a c_ a karakter unicode kódját tartalmazza a karakter helyet, mert így nem okoz gondot pl, az = jel megadása.
Ez egy kicsit nehezebbé teszi a visszakeresést, mert a kódra külön rá kell keresni(pl.: az "&" jel kódja 38, tehát a c_38=_and_ bejegyzés
a fájlnévben szereplő összes "&" jelet kicseréli az "_and_" szövegre )
-r";<érték>" : beállítja a megadott karakterhez tartózó
cserekódot. figyeljünk oda, hogy a kifejezést
macskakörmök közzé kell rakni. Amennyiben a megadott
karakter még nem volt felvéve, felveszi a megadott
értékkel. Az érték lehet szöveg is. Például:
renamer -r"ä;a"
renamer -r"Ä;A"
renamer -r"&;_and_"
renamer -r"ß;ss"
renamer -r"(;_nyitozarojel_"
-l : megjeleníti a létező karakter-cseretáblát
-c vagy --conf : visszaállítja az alapértelmezett renamer.conf fájlt.
minden változtatás elvész.
--dir : könyvtárneveken is végrehajtja az átnevezéseket.
--toupper : nagybetűsre konvertálja a fájlneveket
--tolower : kisbetűsre konvertálja a fájlneveket
--curentdir : csak az aktuális könyvtáron hajt végre átnevezést
--completext : (unix) többszörös kiterjesztések felismerése
--onlyext : csak a kiterjesztésen hajt végre módosítást
--onlybase : csak a fájlnév kiterjesztés nélküli részének módosítása
-v vagy --verbose: kiírja az átalakításokat.
--numbers : a fájlnév elején (a név baloldalán) lévő számokat, aláhúzást, szóközt
és kötőjelet eltávolítja. Tehát például a
140_-_Vangelis_-_Fields_of_Coral.mp3 fájlnévből
Vangelis_-_Fields_of_Coral.mp3 lesz a hatására.
Tippek és trükkök:
Kötegelt feldolgozás:
1. példa: egyszerű példa, itt egy bash szkripttel a megmaradó karaktereket tudod megadni.
#! /bin/bash
array=( "(" ")" "/" "%" "!" "+" "?" "," "{" "}" "@" "#" )
for item in ${array
}
do
./renamer "-r$item;$item"
done
2. példa: kicsit bonyolultabb, de itt már megadhatod, hogy mit mire cseréljen!
#! /bin/bash
array=( "(;(" ");)" "/;/" "%;%" "!;!" "+;+" "?;?" ",;," "{;{" "};}" "@;_kukac_" "#;#" "&;_and_" )
for item in ${array[*]}
do
./renamer "-r$item"
done
A fenti leírás csak áttekintés, mert amint látom hiába használom a code tagot, bizonyos részek nem jelennek meg jól. Azaz akit érdekel a pontos leírás nézze meg az eredeti using_hu.txt fájlt.