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í
×
    dnes 19:22 | Komunita

    Vývojáři openSUSE Tumbleweed oznámili, že u nových instalací se ve výchozím stavu přechází z AppArmor na SELinux. Uživatelé, kteří chtějí zůstat na AppArmor si mohou AppArmor vybrat v instalátoru.

    Ladislav Hagara | Komentářů: 0
    dnes 16:44 | Komunita

    Hector "marcan" Martin skončil jako vedoucí projektu Asahi Linux aneb Linux na Apple Siliconu. Projekt ale pokračuje dál.

    Ladislav Hagara | Komentářů: 1
    dnes 16:33 | Nová verze

    PostgreSQL byl vydán ve verzích 17.3, 16.7, 15.11, 14.16 a 13.19. Řešena je zranitelnost CVE-2025-1094 s CVSS 8.1 a více než 70 chyb.

    Ladislav Hagara | Komentářů: 0
    dnes 14:22 | Humor

    Dnes je Světový den rádia. Použili jste někdy GNU Radio?

    Ladislav Hagara | Komentářů: 2
    dnes 12:33 | IT novinky

    Před 33 lety, ve čtvrtek 13. února 1992, se tehdejší Česká a Slovenská Federativní Republika oficiálně (a slavnostně) připojila k Internetu.

    Ladislav Hagara | Komentářů: 1
    včera 19:44 | Nová verze

    Byla vydána nová verze 9.10 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání.

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

    Český LibreOffice tým vydává překlad příručky LibreOffice Math 24.8. Math je modul editoru vzorců v kancelářském balíku LibreOffice a poskytuje možnosti rozvržení pro zobrazení matematických, chemických, elektrických nebo vědeckých vzorců ve standardní písemné notaci. Příručka je ke stažení na stránce dokumentace.

    ZCR | Komentářů: 0
    včera 05:11 | Zajímavý článek

    Společnost Backblaze zveřejnila statistiky spolehlivosti pevných disků používaných ve svých datových centrech za rok 2024. Ke konci roku 2024 vlastnila 305 180 pevných disků. Průměrná AFR (Annualized Failure Rate), tj. pravděpodobnost, že disk během roku selže, byla 1,57 %. V roce 2023 to bylo 1,70 %. V roce 2022 to bylo 1,37 %.

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

    Intel vydal 34 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20250211 mikrokódů pro své procesory řešící 5 bezpečnostních chyb.

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

    Byla vydána nová verze 1.24 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    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: 1005×
    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.