Portál AbcLinuxu, 13. července 2025 19:08


Dotaz: Náhrada několika znaků ve více souborech

7.12.2007 14:49 Brokarna | skóre: 18 | blog: problemy_s_r_o
Náhrada několika znaků ve více souborech
Přečteno: 279×
Odpovědět | Admin
Možná to tu už někde bylo, ale nemůžu to najít. Jde o to, že mám několik souborů, ve kterých potřebuji nahradit sekvenci souborů 130@ na 200@ . Na řádku s touhle sekvencí jsou i další znaky. Soubory si vyhledám příkazem find . -name jmenosouboru .
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.12.2007 16:06 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Náhrada několika znaků ve více souborech
Odpovědět | | Sbalit | Link | Blokovat | Admin
sed verzie aspon 4.0:
sed -i 's/130@/200@/g' `find . -name jmenosouboru`
If you hold a Unix shell up to your ear, you can you hear the C.
7.12.2007 20:29 Brokarna | skóre: 18 | blog: problemy_s_r_o
Rozbalit Rozbalit vše Re: Náhrada několika znaků ve více souborech
Špatný je, že v cestě jsou složky s mezerama a jinýma znakama, který se v konzoli používají jako např. \-\ neco/jmeno. Zkoušel jsem ještě nechat přes find -i . -name jmeno -fls vystup vytvořit soubor a pak z něj umazat ten začátek (díky bohu za blokový výběry :-) ), ale když jsem nahradil ten find za cat vyber tak to hlásí neznámý přepínač.
7.12.2007 21:35 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Náhrada několika znaků ve více souborech
find -i . -name jmeno -exec sed -i 's/130@/200@/g' "{}" \;
Ak tych suborov bude velmi vela, tak to bude trocha pomalsie. Alebo potom lepsie riesenie:
sed -i 's/130@/200@/g' `find -i . -name jmeno -printf '"%p" ' `
If you hold a Unix shell up to your ear, you can you hear the C.

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.