Portál AbcLinuxu, 25. dubna 2024 21:44


Dotaz: find a mezery v nazvech souboru

21.10.2004 22:28 cynan | skóre: 3
find a mezery v nazvech souboru
Přečteno: 138×
Odpovědět | Admin
#!/bin/bash
for i in `find ./cesta -type d -name "*"`; do
prikaz $i
done

Chtel bych, aby prikaz byl vykonan na kazdem nalezenem adresari.
Pri mezere v nazvu adresarese ale nazev rozpadne na vice casti.
Co s tim?
Jinej zpusob nalezeni vsech adresaru neznam.
nejlepsi je Ferda
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.10.2004 22:33 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: find a mezery v nazvech souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
find /cesta -type d -exec prikaz {} \;

a priste zkus vyhledavani
-- Nezdar není hanbou, hanbou je strach z pokusu.
21.10.2004 22:34 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: find a mezery v nazvech souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
a) $i do uvozovek;

b) nevím, jestli -name "*" je doopravdy to co chceš (ve výpisu se neobjeví adresáře s tečkou na začátku, ale jejich podadrešáře ano);

c) co doopravdy chceš je xargs(1) ;-)
21.10.2004 22:54 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: find a mezery v nazvech souboru
Já bych to doplnil c), že celé je to
find cesta -type d -print0 | xargs -0 -n1 příkaz
21.10.2004 23:27 cynan | skóre: 3
Rozbalit Rozbalit vše Re: find a mezery v nazvech souboru
varianta a) nefunguje
ostatni vyzkousim
nejlepsi je Ferda
22.10.2004 00:01 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: find a mezery v nazvech souboru
Jo, to je další příspěvek k Jak je to s mezerami v nazvu souboru?. Word-splitting bere všechno, takže by sis musel lokálně změnit $IFS na \n, abys v $(...) odlišil mezery v názvech a konce řádků mezi názvy... možná jde i něco méně trhlého, ale každopádně je to důvod proti mezerám v názvech souborů.
22.10.2004 11:46 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: find a mezery v nazvech souboru
ad a) moje nepozornost.

Další level je
touch 'foo
bar'
nebo ještě lépe
mkdir 'foo
-rf '
touch 'foo
-rf / bar'
pokud se ty jména dostane rm...
22.10.2004 12:24 Michal Kubeček
Rozbalit Rozbalit vše Re: find a mezery v nazvech souboru
Technická poznámka: lomítko nemůže být součástí jména souboru. A i kdyby se vám to nějak povedlo (třeba přímou editací adresářové položky), takto to určitě nepůjde.
22.10.2004 15:10 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: find a mezery v nazvech souboru
Ale já ho tam mám jako oddělovač cesty :-)
22.10.2004 15:23 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: find a mezery v nazvech souboru
Takhle nějak by to mělo fungovat
find -name '*bar' | strace -fe trace=execve xargs  ls
...
[pid  5894] execve("/bin/ls", ["ls", "./foo", "-rf", "/", "bar"], [/* 35 vars */]) = 0
...
takže ten newline je tam asi zbytečně (?).
21.10.2004 23:40 cynan | skóre: 3
Rozbalit Rozbalit vše Re: find a mezery v nazvech souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
OK, jsem lama
jiz se mi to podarilo najit v minulych diskuzich
sorry
this thread > /dev/null
nejlepsi je Ferda

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.