abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 1
    včera 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 8
    včera 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 1
    včera 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    včera 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    včera 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    24.4. 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 13
    24.4. 15:55 | Nová verze

    Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (73%)
     (9%)
     (2%)
     (16%)
    Celkem 775 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    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: 990×
    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: 31 | 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
    
    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: 31 | 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: 31 | 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.