Portál AbcLinuxu, 10. května 2025 05:06

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: 1012×
Odpovědět | Admin
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
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

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
Odpovědět | | Sbalit | Link | Blokovat | Admin
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
Odpovědět | | Sbalit | Link | Blokovat | Admin

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

-- RÁMO: psí tábor , ETriatlon: Výuka plavání
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
Odpovědět | | Sbalit | Link | Blokovat | Admin
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
Odpovědět | | Sbalit | Link | Blokovat | Admin

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
Odpovědět | | Sbalit | Link | Blokovat | Admin
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
Odpovědět | | Sbalit | Link | Blokovat | Admin
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
Odpovědět | | Sbalit | Link | Blokovat | Admin
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
Odpovědět | | Sbalit | Link | Blokovat | Admin
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
Odpovědět | | Sbalit | Link | Blokovat | Admin

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
Odpovědět | | Sbalit | Link | Blokovat | Admin
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, (c) 1999-2007 Stickfish s.r.o.