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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 0
dnes 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 0
včera 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 14
včera 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 1
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 26
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 779 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

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: 921×
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 leste | 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 leste | 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 leste | 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.