Prikaz find

Prikaz find sluzi na vyhladavanie suborov v adresarovom strome. Prehladavanie zacne so vsetkymi subormi z initialneho adresara adresar a pokracuje rekurzivne vsetkymi subormi z podadresarov. Dalsie argumenty prikazu find sluzia ako predikaty testujuce rozne vlastnosti suboru. Standardne je zoznam predikatov interpretovany ako logicka konjunkcia. Kazdy nasledujuci predikat sa vyhodnoti iba ak je to nevyhnutne pre vypocet hodnoty celeho vyrazu. Zvlastne predikaty sposobuju vedlajsie efekty ako napr. vypis mena suboru, ...


find adresar predikaty

najpouzivanejsie predikaty:
-mtime -n test ci bol subor modifikovany za poslednych n dni.
-newer file test ci bol subor modifikovany neskor ako subor file
-type d test ci subor je meno adresara
-type f test ci subor je normalny suboru
-type l test ci subor je symbolicky link
-name shellexpr test ci meno suboru matchuje shellovsky vyraz shellexpr.
Matchuje len samotne meno bez cesty (napr. subor.txt)
-path shellexpr test ci meno suboru matchuje shellovsky vyraz shellexpr.
Matchuje uplne meno suboru aj s cestou (napr. ./toto/tutu/subor.txt)
-regex regexpr test ci meno suboru (ale aj s cestou) matchuje regularny vyraz regexpr
   
( pred ) zatvorkovanie vyrazov z predikatov.
pred1 -o pred2 or (alebo), vysledok je logicke alebo pred1
alebo pred2. pred2 sa vyhodnocuje iba ak pred1 nebol splneny.
pred1 -a pred2 and (a sucasne), vysledok je logicke a sucasne pred1
a pred2. pred2 sa vyhodnocuje iba ak pred1 bol splneny.
pred1 pred2 and (a sucasne), vysledok je logicke a sucasne pred1
a pred2. pred2 sa vyhodnocuje iba ak pred1 bol splneny.
   
-print vypise meno prave uvazovaneho suboru
-exec prikaz args ; vykonanie prikazu prikaz s argumentami args.
Zvlastny retazec {} medzi args je nahradeny menom prave uvazovaneho suboru.
-ok prikaz args ; ako -exec, ibaze sa pred akciou spyta, ci moze
   
-prune vzdy splneny, ale odsekne vsetky subory z tohto adresara,
takze sa nezostupi do podadresarov.
priklady:
vypis vsetkych suborov z podadresarov "/home/user",
ktore zacinaju aj koncia retazcom "to".
guma:user:~>find /home/user -name "to*to" -print
/home/user/java/tests/virt/toto
/home/user/Mail/toto
/home/user/tmp/toto
/home/user/tmp/sstmp/toto
/home/user/sutaz/toto








Vymazanie vsetkych suborov z podadresarov "/home/user", ktore koncia retazcom ".dvi"
alebo ".o" alebo ktore sa volaju "core", netyka sa to suborov z podadresara "downloads".

find /home/user \( -name "downloads" -prune \) -o \( -name "*.dvi" -o -name "*.o" -o -name "core" \) -exec rm {} \;



Cvicenia



1.) Napiste prikaz, ktory prehlada adresar /usr (a podadresare) a najde vsetky subory s menom zacinajucim slovom 'find'.

2.) Napiste prikaz, ktory najde vsetky subory v adresari /tmp modifikovane za posledny den.

3.) Napiste prikaz, ktory vypise mena (s cestou) vsetkych suborov s menom "core", dalej vsetky subory s koncovkou ".o", a vsetky subory s koncovkou ".tmp" v pracovnom adresari a podaresaroch.

4.) Napiste prikaz, ktory zisti celkovy pocet riadkov vsetkych suborov s koncovkou ".c", plus vsetkych suborov s koncovkou ".h" plus vsetkych suborov s koncovkou ".java" v adresari /usr a podadresaroch.

5.) Napiste prikaz, ktory najde vsetky subory z adresara /tmp modifikovane za posledny den a skopiruje ich do adresara ~/zaloha/tmp.


arrow arrow