abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

včera 20:40 | Zajímavý článek

Lukáš Růžička v článku S Hydrogenem za lepší rytmus aneb bubeníkem snadno a rychle na MojeFedora.cz představuje automatického bubeníka s názvem Hydrogen (Wikipedie): Hydrogen je velmi vydařený program, který rozhodně nesmí chybět ve výbavě žádného linuxového muzikanta. Umožňuje nejen vytváření jednoduchých bicích doprovodů, ale také sofistikované programování bicích a perkusí, jehož výsledek se naprosto vyrovná drahým

… více »
Ladislav Hagara | Komentářů: 0
včera 13:55 | Zajímavý projekt

UPSat (Twitter) je první open source nanodružice (CubeSat). Jedná se o společný projekt nadace Libre Space Foundation a University of Patras. Repozitáře projektu jsou k dispozici na GitHubu. Pod Libre Space Foundation patří také projekt SatNOGS (zprávička), projekt globální sítě open source pozemních satelitních stanic, vítězný projekt soutěže The Hackaday Prize 2014. UPSat je součástí mise QB50 (Twitter). ID UPSatu je GR02. GPS přijímač na UPSatu je od české společnosti SkyFox Labs. Součástí mise QB50 je i česká nanodružice VZLUSAT-1 s ID CZ02.

Ladislav Hagara | Komentářů: 3
21.4. 15:00 | Komunita

V diskusním listu Thunderbird planning vývojáři poštovního klienta Thunderbird řeší, zda by nebylo možné budoucí Thunderbird postavit nad webovými technologiemi, tj. nad Electronem, stejně jako například Nylas Mail. Gecko, nad kterým je Thunderbird postaven, se má hodně změnit. V plánu je odstranění vlastností, které Firefox už nepotřebuje, ale Thunderbird je na nich závislý [Hacker News, reddit].

Ladislav Hagara | Komentářů: 83
21.4. 10:22 | Bezpečnostní upozornění

Společnost Oracle vydala čtvrtletní bezpečnostní aktualizaci svých softwarových produktů (CPU, Critical Patch Update). Opraveno bylo celkově 299 bezpečnostních chyb. V Oracle Java SE je například opraveno 8 bezpečnostních chyb. Vzdáleně zneužitelných bez autentizace je 7 z nich. V Oracle MySQL je opraveno 39 bezpečnostních chyb. Vzdáleně zneužitelných bez autentizace je 11 z nich.

Ladislav Hagara | Komentářů: 6
21.4. 10:00 | Pozvánky

V úterý 25. dubna proběhne další Prague Containers Meetup. Přijďte se nechat inspirovat jak zlepšit build/delivery pipeline vašich kontejnerových aplikací.

little-drunk-jesus | Komentářů: 2
20.4. 21:33 | Komunita

Na Launchpadu se objevilo kódové jméno následující verze Ubuntu. Ubuntu 17.10 bude Artful Aardvark (mazaný hrabáč) [OMG! Ubuntu!].

Ladislav Hagara | Komentářů: 10
20.4. 20:11 | Zajímavý software

MojeFedora.cz informuje, že společnost Nylas oznámila vydání verze 2.0 poštovního klienta Nylas Mail (původně Nylas N1), která již plně podporuje Linux. Obchodní model společnosti je tzv. open core. Samotný klient je open source, ale uživatel si musí připlatit za některé pokročilé funkce. V základu se lze připojit k GMailu nebo libovolnému účtu přes IMAP. Podpora Exchange je pouze v placené verzi. Klient je napsaný nad Electronem.

Ladislav Hagara | Komentářů: 12
20.4. 15:55 | Zajímavý článek

České centrum pro investigativní žurnalistiku (ČCIŽ) publikovalo na svých stránkách článek s názvem Je česká státní správa „rukojmím Microsoftu“?. Drtivá většina české veřejné správy je závislá na výrobcích softwarového gigantu Microsoft – a nijak zvlášť jí to nevadí.

Ladislav Hagara | Komentářů: 18
20.4. 02:48 | Nová verze

Google Chrome 58 byl prohlášen za stabilní. Nejnovější stabilní verze 58.0.3029.81 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo 29 bezpečnostních chyb. Mezi nimi i chyba umožňující phishing s unicode doménami.

Ladislav Hagara | Komentářů: 0
19.4. 22:44 | Nová verze

Po šesti týdnech od vydání verze 52.0 byla vydána verze 53.0 webového prohlížeče Mozilla Firefox. Z novinek lze upozornit například na nové kompaktní vzhledy – tmavý z Firefoxu Developer Edition a jeho světlá varianta. Na Linuxu byla ukončena podpora procesorů starších než Pentium 4 a AMD Opteron. Podrobné informace v poznámkách k vydání a na stránce věnované vývojářům. Řešeny jsou také bezpečnostní chyby.

Ladislav Hagara | Komentářů: 11
Chystáte se pořídit CPU AMD Ryzen?
 (4%)
 (35%)
 (0%)
 (7%)
 (45%)
 (10%)
Celkem 273 hlasů
 Komentářů: 31, poslední 20.4. 21:26
    Rozcestník

    Dotaz: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka

    CIJOML avatar 15.12.2006 17:43 CIJOML | skóre: 58 | Praha
    Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Přečteno: 931×
    Resim jak rozumne prejmenovat rekurzivne vsechny soubory s mezerou v nazvu a nahradit ji podtrzitkem.

    Nejake napady?

    Prvni nastrel nezabral:
    IFS=`
    `
    
    for i in `find . -name \*\ \*`; do mv "$i" `echo "$i" |tr ' ' _`; done
    

    Odpovědi

    15.12.2006 19:56 marbu | skóre: 28 | blog: hromada | Brno
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    ja jsem to resil takhle, ale asi by se to dalo napsat lip ...
    #!/bin/bash
    
    for line in `find . -name \*\ \* |  sed 's/\( \)/\\\/g' `; do
    
            # zpracuj $line na puvodni jmeno souboru
            file1=`echo $line | sed 's/\\\/\ /g' `;
    
            # zpracuj $line na nove jmeno souboru
            file2=`echo $line | sed 's/\\\/_/g' `;
    
            mv "$file1" $file2;
    
    done
    
    I think warning here is a bug. The biggest cloud service provider. There is no point in being so cool in a cold world.
    CIJOML avatar 15.12.2006 22:11 CIJOML | skóre: 58 | Praha
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Tohle nezabira treba na tohle:

    notas:/home/cijoml/work# find . -name \*\ \*
    ./HP1220CD_install/Symbol_Sets/SYM readme.txt
    
    Fuky avatar 15.12.2006 20:31 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka

    for i in $(seq 10); do
      find -mindepth $i -maxdepth $i |xargs -i rename "s/ /_/g" {}
    done
    

    CIJOML avatar 15.12.2006 22:09 CIJOML | skóre: 58 | Praha
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    potrebuju to, bohuzel, na neomezeny pocet urovni
    16.12.2006 10:32 vencas | skóre: 32
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Defaultně není rekurze omezená, stačí nespecifikovat -mindepth / -maxdepth.
    Fuky avatar 16.12.2006 12:57 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka

    depth=$(find -printf "%d\n" |sort -gr |head -n 1)
    
    for i in $(seq $depth); do
      find -mindepth $i -maxdepth $i |xargs -i rename "s/ /_/g" {}
    done
    

    16.12.2006 22:52 Kníže Ignor | skóre: 19 | blog: stoupa
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Myšlenka procházet to od listů po hladinách až ke kořeni je správná, ale nelíbí se mi to. Raději bych postupoval takhle:

    1) vytvořím stejnou adresářovou strukturu někde bokem (ale bez podtržítek), něco jako find "jenom-adresáře" | sed 's/ /_/g; s/^/mkdir -p $CESTA_BOKEM/' | $SHELL

    2) podobně jako v 1 ale jenom na soubory a místo mkdir mv a ještě přidat zdrojovou cestu

    3) smazat starý adresář a nahradit novým
    Jestli máš zálohu mého blogu, tak mi ji pošli. Nějak jsem si ho smazal :-)
    masomlejn avatar 16.12.2006 11:25 masomlejn | skóre: 16
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    kdysi davno sem to taky resil:
    #!/bin/bash                                                                                         
    ##################                                                                                  
    
    function rmspc()
    {
        if [ $(echo "$file"| grep -c " ") -ne "0" ]; then
            echo "$file --> $(echo "$file" | sed 's/\ /_/g')"
        fi
    }
    
    function dir()
    {
        for file in *; do
            if [ -d "$file" ]; then
                rmspc
                cd "$file"
                echo "$PWD"
                dir
                cd ..
            else
                rmspc
            fi
        done
    }
    dir
    
    Myslim ze to je "ladici" verze takze tam misto mv je echo. Slo by to urcite udelat lip, ostatne jako vsechno:-)
    16.12.2006 13:01 Petr Zelenka | skóre: 24 | Semice/Stuttgart (Sindelfingen)
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka

    Ahoj,

    a co třeba tohle:

    find <"kořenový" adresář> -exec rename 's/([^\ ]*)\ ([^\ ]*)/$1_$2' {} +

    kde kořenovým adresářem myslím kořen podstromu vaší adresářové struktury, kterého se to má týkat. Tato ukázka počítá jen s jednou mezerou v názvu souboru.

    A teď si uvědomte, jaký je vztah mezi krychlí a motýlem.
    Fuky avatar 16.12.2006 19:34 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka

    find -depth -exec rename "s/(?!.*\/) +(?=[^ ]*)/_/g" {} \;

    CIJOML avatar 16.12.2006 22:27 CIJOML | skóre: 58 | Praha
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Nejak tohle nemaka

    cijoml@notas:~$ find -depth -exec rename "s/(?!.*\/) +(?=[^ ]*)/_/g" {} \; bash: !.*\/: event not found

    BTW kdo to oznacil za odpovezene?!
    Fuky avatar 16.12.2006 23:42 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka

    find -depth -exec rename 's/(?!.*\/) +(?=[^ ]*)/_/g' {} \;

    BTW: Bash 3.1.17(1)-release to vezme i s uvozovkami a Bash 2.05b.0(1)-release jen s apostrofy.

    18.12.2006 11:57 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    perl -mFile::Find=finddepth -le 'finddepth(sub{m/\s/ and do{(my $a=$_) =~ s/\s/_/g; rename $_, $a}}, @ARGV)' .
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    18.12.2006 13:13 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Kratší varianta:
    perl -mFile::Find=finddepth -e 'finddepth(sub{($a=$_)=~y/ /_/and rename $_,$a}, @ARGV)' .
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    18.12.2006 12:28 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Mimochodem, píšeš jen o souborech, co se má stát s adresáři zůstává záhadou.
    IFS=`
    `
    je co? To se má jako provést nic a výsledek nic se má uložit do proměnné? Snad jsi chtěl napsat
    IFS=$"\n"
    A
    for i in `find . -name \*\ \*`
    je co jako? To nikdy, opravdu nikdy nedělej! Když tak
    find . -name '* *' |
    while read filename
    do
      ...
    done
    a jde to i bez IFS. Místo
    mv "$i" `echo "$i" |tr ' ' _`
    se píše
    mv "$i" "${a// /_}"
    No a používat na tohle find samozřejmě jde, ale asi bych to udělal perlem nebo nějak takhle
    find -depth -name '* *' -exec rename 'my ($dir, $name) = m,(.*)/(.*),;$name=~y/ /_/;$_=join"/", $dir,$name' {} +
    a nebo rovnou tu verzi v perlu.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    18.12.2006 12:29 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Sorry překlep, místo
    mv "$i" "${a// /_}"
    jsem samozřejmě myslel
    mv "$i" "${i// /_}"
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    CIJOML avatar 18.12.2006 12:40 CIJOML | skóre: 58 | Praha
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    To IFS je pretypovani oddelovace z mezery na enter :)

    Funguje i verze od 16.12. 23:42 Fuky, kterou jsem nakonec pouzil.

    Slo mi i o prejmenovani adresaru s mezerou na podtrzitko
    18.12.2006 13:19 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    To IFS je pretypovani oddelovace z mezery na enter :)
    Vážně? Tak to se asi musím něco přiučit
    $ IFS=`
    > `
    $ echo ">$IFS<"
    ><
    $ IFS=$'\n'
    $ echo ">$IFS<"
    >
    <
    
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    18.12.2006 13:31 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Funguje i verze od 16.12. 23:42 Fuky, kterou jsem nakonec pouzil.
    No jak chceš, je to tvůj boj, ale až budeš potřebovat přejmenovat pár desítek tisíc souborů, tak rozhodně zkus
    find -depth -name '* *' -exec rename 'my@a=split"/";$a[$#a]=~y/ /_/;$_=join"/",@a' {} +
    nebo perlish. Přece jen to bude rychlejší.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    18.12.2006 13:56 Tomáš | skóre: 29 | blog: Tomik
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    To jsem resil na obecnejsi urovni v Pythonu. Konvertoval jsem navic ceske znaky atd.
    #!/usr/bin/python
    # -*- coding:  utf-8
    
    '''Přejmenuje všechny soubory a adresáře v aktuálním adresáři tak,
       aby to mělo nějakou kulturu. Rekurzivně pracuje i ve vnořených
        adresářích. Změny jsou následující:
        české znaky -> anglické
        zruší všechny pomlčky a mezery na začátku názvu (hovado, které takové
                názvy tvoří, by zasloužilo pár facek)
        zvláštní znaky se nahradí '_', pomlčku beru na milost, ale ne na začátku
        vyhodí se (zbytečné) '_' kolem pomlčky
        násobné '_' se nahradí jediným výskytem
        vše se převede na malá písmena
    
        Výsledkem by měl být název, kde jsou jenom písmena, podtržítka,
        číslice, tečky a pomlčky (ale ne na začátku).
        Na standardní výstup píše, co přesně dělá
        Použití: vycisti.py [ > logfile ]
    '''
    
    import re
    import os
    import unicodedata
    
    class RenameFiles:
        def __init__(self):
            if os.environ.get('OS','') == 'Windows_NT':
                self.locale = "cp1250"
            else: #probably linux
                local = os.environ.get('LANG', '')
                if '.' in local: #Fedora way
                    self.locale = local.split('.')[1]
                else: #Debian
                    self.locale = local
    
        def cleanString(self, what):
            '''Gets rid of letters which are not in English alphabet'''
            assert type(what) == unicode
            normalized = unicodedata.normalize('NFKD', what)
            output = ''
            for c in normalized:
                if not unicodedata.combining(c):
                    output += c
            return output
    
        def cleanName(self, fileName):
            '''Convert the givne string into a form which is suitable for a file name'''
            assert type(fileName) == str
            fileName = self.cleanString(fileName.decode(self.locale))
            fileName = re.sub("^[-\ ]+", "", fileName) #delete space or dash at the beginning
            invalid_stuff = re.compile(r"[^a-zA-Z0-9_\.-]+") #forbidden characters (non-alfanumerical)
            fileName = invalid_stuff.sub("_", fileName.strip()) #replace invalid stuff and spaces by _,
            fileName = re.sub("_+", "_", fileName) #squeeze continuous underscores to one _
            fileName = re.sub("-+", "-", fileName) #squeeze continuous dashes to one _
            fileName = re.sub("_*-_*", "-", fileName) #removes useless '_' round the dash
            fileName = re.sub("_*\._*", ".", fileName) #removes useless '_' round the dot
            fileName = re.sub("-*\.-*", ".", fileName) #removes useless '-' round the dot
            fileName = fileName.lower() #lower case
            valid_name=re.compile(r"^[a-z0-9_\.][a-z0-9_\.-]+$") #regular expression for feasible name
            if not valid_name.match(fileName):
                print "Warning: '%s' is still not valid name" % fileName
            return fileName.encode(self.locale)
    
        def renameFile(self, dir, fileName):
            '''Public: Renames the file fileName in the directory'''
            assert type(fileName) == str
            assert type(dir) == str
            new = self.cleanName(fileName)
            if (new != "" and new != fileName):
                print "Renaming %s: %s -> %s" % (dir, fileName, new) #kontrolní výpis
                os.rename(dir+os.sep+fileName, dir+os.sep+new)
                return
    
        def process_dir(self, dir):
            """process all files in the folder"""
            assert type(dir) == str
            for f in os.listdir(dir):
                file = dir + os.sep + f
                if os.path.isdir(file): #if it is directory
                    self.process_dir(file) #process the elements in the directory
                    self.renameFile(dir, f) #rename the directory itself
                else:
                    self.renameFile(dir, f) #if it is a file
            return
    
    if __name__=='__main__':
            renamer = RenameFiles()
            renamer.process_dir('.')
    
    
    18.12.2006 14:14 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Můžete mi vysvětlit tyhle dva řádky?
            fileName = re.sub("_+", "_", fileName) #squeeze continuous underscores to one _
            fileName = re.sub("-+", "-", fileName) #squeeze continuous dashes to one _
    
    Podle mého laického názoru jsou tam naprosto zbytečné. V tu chvíli tam totiž žádné - už nemůže být a všechny _ jsou tam vždy jen jednou. A nebo taky je možné, že reguláry v pythonu fungují naprosto jinak než jinde :-) No a vůbec, ta práce s reguláry je schválně napsaná takto, aby se počítač pokudmožno nenudil, že? Spousta jich jde sdružit a taky co kdyby se skompilovaly jen jednou (aspoň pro ten objekt, když ne rovnou pro celou třídu) a nedělaly se pro každý soubor znova ;-)
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    21.12.2006 14:56 Tomáš | skóre: 29 | blog: Tomik
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Ad 1) Bylo to motivovano tim, ze napr sekvence _-_ se prevede na ___ a potom ma vyznam dve podtrzitka vyhodit. Ale kazdopadne netvrdim, ze to je uplne spravne

    Ad 2) Regularni vyrazy jsou tak rozhazene, abych se v nich vyznal. Nepusobi to zadne vaznejsi vykonostni problemy, a to mam slaby stroj. Pokud se Vam chce je nejak optimalizovat be zztraty prehlednosti, tak bude rad.

    Mimochodem, mam tam i chybku v inicializaci self.locale, ale to si kazdy opravi podle potreby.
    21.12.2006 16:46 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Áha, už to vidím. Teda ono se _-_ na nic nepřevede, protože - není invalid_stuff. Když tak koukám na tu dokumentaci sre v Pythonu, tak to je teda pěkně nepohodlné proti perlu. Třeba kompilace jen jednou je tam brnkačka, děje se to transparentně a člověk o tom skoro ani neví a na využití byť jen hloupého (), aby člověk studoval kdo ví co.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    21.12.2006 17:47 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    No python není zrovna moje hobby, ale rozhodně bych přinejmenším předělal tu část cleanName asi nějak takto
        __start_trash = re.compile(r'^[- ]+').sub
        startCleaner = lambda x: __start_trash('', x)
        
        __invalid_stuff = re.compile(r'[^a-zA-Z0-9.-]+').sub
        invalidStuffRemover = lambda x: __invalid_stuff('_', x)
        
        __useless_chars = re.compile(r'[-_]*([-.])\1*[-_]*').sub
        uselessCharsRemover = lambda x: __useless_chars(r'\1', x)
        
        validName = re.compile(r'^[a-z0-9_\.][a-z0-9_\.-]+$').match
        
        def cleanName(self, fileName):
            '''Convert the givne string into a form which is suitable for a file name'''
            assert type(fileName) == str
            fileName = self.cleanString(fileName.decode(self.locale))
            fileName = self.startCleaner(fileName.strip()) #delete space or dash at the beginning
            fileName = self.invalidStuffRemover(fileName) #replace invalid stuff and spaces by _,
            fileName = self.uselessCharsRemover(fileName) #remove useless chars
            fileName = fileName.lower() #lower case
            if not self.validName(fileName):
                print "Warning: '%s' is still not valid name" % fileName
            return fileName.encode(self.locale)
    
    Jak říkám v pythonu nemám moc praxe, ale asi takhle. Kdybych v tom měl napsaných tolik desítek tisíc řádků jako v perlu, tak by to bylo lepší. V pricipu jde o to, aby se toho co nejméně dělalo dvakrát. Když si uvědomím, že tohle kolem kompilace těch regexpů jen jednou za mě udělá perl aniž by si to 99% programátorů v perlu vůbec uvědomilo, tak se mi ten python zas až tak moc nelíbí, ale když si stím člověk pohraje, tak ty programy mohou vypadat k světu a zároveň být efektivní.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    18.12.2006 20:50 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše convmv
    Nechci zpochybnovat programatorske kvality mistniho osazenstva, jen bych rad poukazal na nedavnou zpravicku o convmv.
    19.12.2006 10:26 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: convmv
    $ convmv
    bash: convmv: command not found
    
    Ne každý si do systému instaluje každou pičovinku, ale find a rename (and or perl) má skoro každý. I když uvedené příklady jsou pro perlish rename.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    19.12.2006 00:18 Tomas
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka

    Návod do žůžo shellu:

    #!/usr/bin/zsh
    setopt EXTENDED_GLOB
    for f in  **/*\ *(.) ; do mv "$f" "${f:h}/${${f:t}// /_}" ; done
    

    Je to ale skoro nečitelné.

    19.12.2006 09:46 skonciljsem | skóre: 20
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Z hlavy to nevymyslím a shell tu nemám, ale co takhle použít s tím findem xargs?
    19.12.2006 10:23 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Když nevíš, mlč!
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    19.12.2006 16:00 skonciljsem | skóre: 20
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    find . * -type f -print0 | xargs -0 rename ' ' _
    19.12.2006 16:08 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Hmm a adresáře? A o kolik je to efektivnější než to, co už tu bylo napsáno a krom toho není rename jako rename.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    20.12.2006 01:43 skonciljsem | skóre: 20
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Podle pořadí důležitosti:

    Adresáře: Přečti si otázku.

    Tečka mezera hvězdička, tvoje následující odpověď: To je hodně debilně opsané . -name '*'. (Slušný člověk by použil něco jako '* *', ale to jsem o sobě nikdy netvrdil.) Díky.

    Efektivita: Obrovská! Je to pomalý! Ale je to jednoduché a s pomocí manu to uplácá i taková lama jako já. Ještě ke všemu je to typická jednorázovka. Ale kupodivu jsem to tu nepsal ani pro tebe ani pro CIJOMILa(*), ale pro ty kdo začínají. Snad si to tu přečtou, vzpomenou si, až to budou potřebovat, a uplacaji si něco taky.

    (*) Nejsem samolibý magor, jsem pouze samolibý.
    20.12.2006 10:46 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    Podle pořadí důležitosti:

    Adresáře: Přečti si otázku.
    Přečti si diskusi, otázka byla doplněna.

    Tečka mezera hvězdička, tvoje následující odpověď: To je hodně debilně opsané . -name '*'.
    To hlavně nedělá to co by to dělat mělo.
    (Slušný člověk by použil něco jako '* *', ale to jsem o sobě nikdy netvrdil.) Díky.

    Efektivita: Obrovská! Je to pomalý! Ale je to jednoduché a s pomocí manu to uplácá i taková lama jako já. Ještě ke všemu je to typická jednorázovka. Ale kupodivu jsem to tu nepsal ani pro tebe ani pro CIJOMILa(*), ale pro ty kdo začínají.
    No, tak ti co začínají si doufám přečtou ten man pořádně a kouknou se jak se to dělá. Proč nepoužít xargs? K čemu, když máme + za -exec ve findu? Bez -depth to s adresářema stejně nevyřešíš a jak se ti tam nějakej s mezerou v názvu vyskytne, tak to tvoje řešení prostě zhavaruje.
    Snad si to tu přečtou, vzpomenou si, až to budou potřebovat, a uplacaji si něco taky.

    (*) Nejsem samolibý magor, jsem pouze samolibý.
    Hmm, hlavně s křížkem po funuse, dále je zjevné, že jsi předchozí diskusi vůbec nečetl a prostě jsi jen tak něco plácl. Jen tak plácalů jsou mraky a jsou úplně k ničemu. Raději se řiď radou.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    19.12.2006 16:12 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Rekurzivni prejmenovani souboru s mezerou v nazvu na podtrzitka
    jo a to find . * má být jako co?
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.