Portál AbcLinuxu, 10. května 2025 08:16
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.confmísto očekávaného
./lilo ./cups/clientPř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
find . -name "*.conf" -exec basename {} .conf \;
lilo clientsorry
$ basename {} .conf {}find pak dostane echo {}.
Lze nějak vnutit, aby se ty závorky expandovaly dřív ?
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 ...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.