Portál AbcLinuxu, 10. května 2025 08:16

Dotaz: find a "podivná" expanze parametru {}

24.5.2005 14:49 MichalX
find a "podivná" expanze parametru {}
Přečteno: 117×
Odpovědět | Admin
find . -name "*.conf" -exec echo `basename {} .conf` \;

spuštěný v adresáři /etc obsahujícím soubory lilo.conf a cups/client.conf vypíše

./lilo.conf
./cups/client.conf
místo očekávaného

./lilo
./cups/client
Přitom např. echo `basename lilo.conf .conf` správně vypíše pouze lilo. Funguje i pro expanzi proměnných prostředí:
export testfind='lilo.conf'
echo `basename "$testfind" .conf`
-> lilo
Co je na tom příkazu z úvodu špatně ?

Díky

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.5.2005 14:55 Kamil | skóre: 18 | blog: bejkarny
Rozbalit Rozbalit vše Re: find a "podivná" expanze parametru {}
Odpovědět | | Sbalit | Link | Blokovat | Admin
K cemu to echo?
find . -name "*.conf" -exec basename {} .conf \;
24.5.2005 14:59 MichalX
Rozbalit Rozbalit vše Re: find a "podivná" expanze parametru {}
Já to chtěl jen zjednodušit pro příklad. Ve skutečnosti ten find bude spouštět skript, jehož parametrem bude mj. název nalezeného souboru s upravenou příponou.
24.5.2005 15:09 Kamil | skóre: 18 | blog: bejkarny
Rozbalit Rozbalit vše Re: find a "podivná" expanze parametru {}
Aha, tak to bych mozna upustil od obracenych apostrofu a prohanel to rourou do xargs-u, ale proti gustu... :o)
24.5.2005 14:55 MichalX
Rozbalit Rozbalit vše Re: find a "podivná" expanze parametru {}
Odpovědět | | Sbalit | Link | Blokovat | Admin
... místo očekávaného
lilo
client
sorry
24.5.2005 14:58 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: find a "podivná" expanze parametru {}
Odpovědět | | Sbalit | Link | Blokovat | Admin
$ basename {} .conf
{}
find pak dostane echo {}.
24.5.2005 15:01 MichalX
Rozbalit Rozbalit vše Re: find a "podivná" expanze parametru {}
Ó, díky :-)

Lze nějak vnutit, aby se ty závorky expandovaly dřív ?

24.5.2005 15:07 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: find a "podivná" expanze parametru {}
Závorky find expanduje, když spouští ten příkaz, dřív to jaksi nejde. Můžeš to spouštět shellem, ale je to už extrémně padlé na hlavu:
find . -name "*.conf" -exec sh -c 'echo `basename {} .conf`' \;
Nevím co potřebuješ, ale určitě půjde použít
find ... -print0 | xargs -0 ...

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.