rekurzivni prochazeni adresaru v shellu

Jan Kasprzak kas na informatics.muni.cz
Středa Září 4 11:01:48 CEST 2002


Matthes wrote:
: Zdravicko,
: 
: potreboval bych udelat shellskriptik, ktery bude delat nasledujici:
: 
: pri spusteni se mu zada adresar, ktery ma prochazet;
: dal bude prochazet polozku po polozce a pokud to je regulerni soubor, neco 
: s nim provede (zamena retezce sed-em, recode) a vystup ulozi do nejake 
: tmpdir.
: pokud je to adresar, spusti se rekurze a jede se dal.
: v tmpdir samozrejme musi byt zachovana adresarova struktura zadaneho 
: adresare.
: 
: At se snazim jak se snazim, nejde mi rozchodit ta rekurze. Ponivac jsem s 
: shellscriptingem trochu na stiru, uz si nevim rady.
: Poradite, jak nejlepe na to?

find adresar -type f -printf "%P\n" | while read a; do
	mkdir tmpdir/`dirname "$a"` 2>/dev/null # mozna uz existuje
	sed 's/neco/neco_jineho/g' <adresar/$a >tmpdir/$a
done

zadnou rekurzi tam nepotrebujete.

Pro spravnou funkcnost byste ovsem potreboval osetrit jmena souboru
obsahujici \n, zrejme pres -printf "%P\0" a pak asi while IFS="\000" read a ...
nebo tak nejak.

Nezkousel jsem to, ale takhle by to melo fungovat.

-Y.

-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/   Czech Linux Homepage: http://www.linux.cz/ |
       Pruning my incoming mailbox after being 10 days off-line,
       sorry for the delayed reply.


Další informace o konferenci Linux