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 19:11 | Nová verze

    Open source RDP (Remote Desktop Protocol) server xrdp (Wikipedie) byl vydán ve verzi 0.10.0. Z novinek je vypíchnuta podpora GFX (Graphic Pipeline Extension). Nová větev řeší také několik bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 1
    dnes 04:11 | Nová verze

    Rocky Linux byl vydán v nové stabilní verzi 9.4. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 22:22 | Bezpečnostní upozornění

    Dellu byla odcizena databáze zákazníků (jméno, adresa, seznam zakoupených produktů) [Customer Care, Bleeping Computer].

    Ladislav Hagara | Komentářů: 11
    včera 21:11 | Zajímavý článek

    V lednu byl otevřen editor kódů Zed od autorů editoru Atom a Tree-sitter. Tenkrát běžel pouze na macOS. Byl napevno svázán s Metalem. Situace se ale postupně mění. V aktuálním příspěvku Kdy Zed na Linuxu? na blogu Zedu vývojáři popisují aktuální stav. Blíží se alfa verze.

    Ladislav Hagara | Komentářů: 23
    včera 14:33 | Pozvánky

    O víkendu 11. a 12. května lze navštívit Maker Faire Prague, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    8.5. 21:55 | Nová verze

    Byl vydán Fedora Asahi Remix 40, tj. linuxová distribuce pro Apple Silicon vycházející z Fedora Linuxu 40.

    Ladislav Hagara | Komentářů: 19
    8.5. 20:22 | IT novinky

    Představena byla služba Raspberry Pi Connect usnadňující vzdálený grafický přístup k vašim Raspberry Pi z webového prohlížeče. Odkudkoli. Zdarma. Zatím v beta verzi. Detaily v dokumentaci.

    Ladislav Hagara | Komentářů: 6
    8.5. 12:55 | Nová verze

    Byla vydána verze R14.1.2 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 0
    7.5. 18:55 | IT novinky

    Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).

    Ladislav Hagara | Komentářů: 10
    7.5. 18:33 | IT novinky

    Apple představil (keynote) iPad Pro s čipem Apple M4, předělaný iPad Air ve dvou velikostech a nový Apple Pencil Pro.

    Ladislav Hagara | Komentářů: 7
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (63%)
     (8%)
     (14%)
     (16%)
    Celkem 152 hlasů
     Komentářů: 11, poslední dnes 18:00
    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.