Find kasutamine: Difference between revisions
(31 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
Autor: | |||
Katrin Kibbal 31A | |||
=Sissejuhatus= | =Sissejuhatus= | ||
'''Find''' on üks | '''Find''' on üks UNIXi utiliite. Tema abil saab otsida teatud tingimustele vastavaid faile kataloogipuust, mis UNIXi puhul sisaldab kuni paarkümmend tuhat faili. | ||
Kadunud faili on võimalik üles leida ''nime, nime osa, omaniku või grupi nime, loabittide, suuruse, failitüübi, loomisaja ning modifitseerimisaja'' järgi. '''Find'''-käsku mõne teisega kombineerides on võimalik otsida faile isegi üheainsa sõna järgi, mida see fail sisaldab. | Kadunud faili on võimalik üles leida ''nime, nime osa, omaniku või grupi nime, loabittide, suuruse, failitüübi, loomisaja ning modifitseerimisaja'' järgi. '''Find'''-käsku mõne teisega kombineerides on võimalik otsida faile isegi üheainsa sõna järgi, mida see fail sisaldab. | ||
Line 12: | Line 14: | ||
Find otsib rekursiivselt etteantud kataloogi alamkataloogidest failinimega määratud faile. ''-print'' näitab, et tulemused tuleb väljastada ekraanile. [[http://www.docstoc.com/docs/23941914/UNIX-i-ajalugu]] | Find otsib rekursiivselt etteantud kataloogi alamkataloogidest failinimega määratud faile. ''-print'' näitab, et tulemused tuleb väljastada ekraanile. [[http://www.docstoc.com/docs/23941914/UNIX-i-ajalugu]] | ||
=Näited= | =Näited= | ||
==Faili leidmine nime põhjal== | |||
''Olgu meil vaja leida (find) fail, mille nimi (name) on uhuu. Kuna pole teada, mis kataloogis ta võiks asuda, siis alustame otsinguid juurkataloogist (/). Ning lõpuks, kui sellise nimega fail leitakse, siis tuua ekranile (-print) tema täisnimi.'' | ''Olgu meil vaja leida (find) fail, mille nimi (name) on uhuu. Kuna pole teada, mis kataloogis ta võiks asuda, siis alustame otsinguid juurkataloogist (/). Ning lõpuks, kui sellise nimega fail leitakse, siis tuua ekranile (-print) tema täisnimi.'' | ||
Line 43: | Line 24: | ||
<pre>find / -name uhuu -print</pre> | <pre>find / -name uhuu -print</pre> | ||
* | *Kui täpne failinimi pole teada, siis saab kasutada malle. Mall tuleb panna jutumärkidesse ("). Taoline käsk kõlaks umbes sedasi: | ||
<pre>find / -name "*uu" -print</pre> | <pre>find / -name "*uu" -print</pre> | ||
*Kui otsida erinevate laienditega faile (näiteks .mpg ja .avi): | |||
<pre> find /-name "*.mpg" -o -name "*.avi" -print</pre> | |||
==Faili otsimine omaniku nime järgi== | |||
<pre>find /usr/home -user peeter -print</pre> | <pre>find /usr/home -user peeter -print</pre> | ||
Line 53: | Line 39: | ||
''Mingile kasutajale kuuluvat faili on ikka mõttekam otsida enne kodust kui küla pealt, sest kogu failisüsteemi findiga läbikäiamine võib kulutada tubli pool tundi Sinu ajast.'' | ''Mingile kasutajale kuuluvat faili on ikka mõttekam otsida enne kodust kui küla pealt, sest kogu failisüsteemi findiga läbikäiamine võib kulutada tubli pool tundi Sinu ajast.'' | ||
==Faili otsimiseks grupitunnuse, näiteks bookkeep järgi== | |||
<pre>find /usr/home -group bookkeep -print</pre> | <pre>find /usr/home -group bookkeep -print</pre> | ||
==Faili leidmine loabittide järgi== | |||
<pre>find . -perm 0755 -print</pre> | <pre>find . -perm 0755 -print</pre> | ||
''Kusjuures otsitakse faile, mille loabitid käsu chmod tähenduses on täpselt rwxr-xr-x. Punkt find-käsu järel märgib, et otsimist alustatakse samast kataloogist allapoole, kus Sa hetkel asud.'' | |||
==Failide otsimine suuruse järgi== | |||
*Selleks, et leida faile, mille mahuks on 50000 baiti (c-char) või enam, tuleb anda käsk: | |||
<pre>find / -type f -size +50000c</pre> | |||
''Selles näites tähendab -type f, et tuleb otsida ikka normaalsete failide seast, mitte kataloogide, semaforide ja /dev/-kataloogi peegelduste seast. Sest semaforil pole pikkust. Semafor kas on või teda pole, /dev-kataloogi peegeldatud füüsilise kõvaketta pikkuse mõõtmisel, aga võivad olla hoopis naljakad tagajärjed...'' | |||
*Selleks, et leida näiteks kataloogi var alamkataloogist log otsitakse kõik failid suurusega 1MB. | |||
<pre>find /var/log -size 1M</pre> | |||
==Faili leidmine tema küljes rippuvate kellaaegade järgi== | |||
''Nagu teada, on UNIXis iga faili küljes kolm kellaaega, loomise või loabittide muutmise aeg (change time -- ctime), viimase avamise aeg (access time -- atime) ning sisu viimase muutmise aeg (modification time -- mtime).'' | |||
*Nüüd võime anda käsu failide otsimiseks, mille loomisajast on möödunud vähem kui 7 päeva, kuid viimase näppimise ajast rohkem kui 2 päeva: | |||
<pre>find / -ctime -7 -atime +2 -print</pre> | |||
*Leiame näiteks .avi failid, mida muudeti vähem kui 15 päeva tagasi: | |||
<pre> find / -name "*.avi" -mtime -15</pre> | |||
*Kui tekib vajadus otsida faile täpsema ajavahemiku järgi kui üks päev, siis on olemas ka võimalus lugeda minuteid: otsime faile, mida on muudetud viimase 10 minuti jooksul: | |||
<pre>find . -mmin -10 -print</pre> | |||
==Faili leidmine temas sisalduva stringi järgi== | |||
''find-käsul on operaator nimega -exec {}, millega saab leitud faili kallal mõnda teist UNIXi käsku rakendada. Failis sisalduvat sõna teades tuleb faili otsida käskude find ja grep ristsugutise abil:'' | |||
<pre>find /usr/doc -type f -exec grep "Uugametsa Kolla" {} \;</pre> | |||
*Käsk otsibib (find) kataloogist /usr/doc allapoole läbi kõik failid (-type f) ning täidab igaühe ({}) kallal neist failidest käsu grep, mis omakorda otsib failist stringi "Uugametsa Kolla". | |||
*Äraspidi kaldkriipsud selles näites on mõeldud C-Shelli (csh) ja Turbo-C-Shelli (tcsh) kasutajatele, et varjestada shelli eest metamärki (semikoolonit). Semikoolon ise märgib -exec-operaatori lõppu. | |||
==100000 faili kustutamine find käsku kasutades== | |||
''Rm käsuga niisama ei õnnestu 100000 faili kustutada, andes errori, et argumentide nimekiri on liiga pikk.'' | |||
''Lahenduseks on find käsk, mille abil on kerge suurt hulk faile kustutada.'' | |||
* Kustutame näiteks kõikidest kataloogidest kõik .jpg laiendiga failid: | |||
<pre>find . -name "*.jpg" -exec rm {} \;</pre> | |||
* \; on seal vajalik süntaks lõpus! {} asemele hakatakse järjest panema otsitavaid asju mida find leiab. | |||
[http://www.ibm.com/developerworks/aix/library/au-unixerrors/index.html] | |||
=Lingid= | =Lingid= | ||
[http://www. | |||
[http://www.debuntu.org/how-to-find-files-on-your-computer-with-find | [[http://www.docstoc.com/docs/23941914/UNIX-i-ajalugu]], [[http://www.eenet.ee/EENet/assets/docs/abs/find.html#word]] ja [[http://www.debuntu.org/how-to-find-files-on-your-computer-with-find]] | ||
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]] | [[Category:Operatsioonisüsteemide administreerimine ja sidumine]] | ||
Latest revision as of 13:26, 11 June 2010
Autor: Katrin Kibbal 31A
Sissejuhatus
Find on üks UNIXi utiliite. Tema abil saab otsida teatud tingimustele vastavaid faile kataloogipuust, mis UNIXi puhul sisaldab kuni paarkümmend tuhat faili.
Kadunud faili on võimalik üles leida nime, nime osa, omaniku või grupi nime, loabittide, suuruse, failitüübi, loomisaja ning modifitseerimisaja järgi. Find-käsku mõne teisega kombineerides on võimalik otsida faile isegi üheainsa sõna järgi, mida see fail sisaldab.
Süntaks
find kataloog -name failinimi -print
Find otsib rekursiivselt etteantud kataloogi alamkataloogidest failinimega määratud faile. -print näitab, et tulemused tuleb väljastada ekraanile. [[1]]
Näited
Faili leidmine nime põhjal
Olgu meil vaja leida (find) fail, mille nimi (name) on uhuu. Kuna pole teada, mis kataloogis ta võiks asuda, siis alustame otsinguid juurkataloogist (/). Ning lõpuks, kui sellise nimega fail leitakse, siis tuua ekranile (-print) tema täisnimi.
find / -name uhuu -print
- Kui täpne failinimi pole teada, siis saab kasutada malle. Mall tuleb panna jutumärkidesse ("). Taoline käsk kõlaks umbes sedasi:
find / -name "*uu" -print
- Kui otsida erinevate laienditega faile (näiteks .mpg ja .avi):
find /-name "*.mpg" -o -name "*.avi" -print
Faili otsimine omaniku nime järgi
find /usr/home -user peeter -print
Mingile kasutajale kuuluvat faili on ikka mõttekam otsida enne kodust kui küla pealt, sest kogu failisüsteemi findiga läbikäiamine võib kulutada tubli pool tundi Sinu ajast.
Faili otsimiseks grupitunnuse, näiteks bookkeep järgi
find /usr/home -group bookkeep -print
Faili leidmine loabittide järgi
find . -perm 0755 -print
Kusjuures otsitakse faile, mille loabitid käsu chmod tähenduses on täpselt rwxr-xr-x. Punkt find-käsu järel märgib, et otsimist alustatakse samast kataloogist allapoole, kus Sa hetkel asud.
Failide otsimine suuruse järgi
- Selleks, et leida faile, mille mahuks on 50000 baiti (c-char) või enam, tuleb anda käsk:
find / -type f -size +50000c
Selles näites tähendab -type f, et tuleb otsida ikka normaalsete failide seast, mitte kataloogide, semaforide ja /dev/-kataloogi peegelduste seast. Sest semaforil pole pikkust. Semafor kas on või teda pole, /dev-kataloogi peegeldatud füüsilise kõvaketta pikkuse mõõtmisel, aga võivad olla hoopis naljakad tagajärjed...
- Selleks, et leida näiteks kataloogi var alamkataloogist log otsitakse kõik failid suurusega 1MB.
find /var/log -size 1M
Faili leidmine tema küljes rippuvate kellaaegade järgi
Nagu teada, on UNIXis iga faili küljes kolm kellaaega, loomise või loabittide muutmise aeg (change time -- ctime), viimase avamise aeg (access time -- atime) ning sisu viimase muutmise aeg (modification time -- mtime).
- Nüüd võime anda käsu failide otsimiseks, mille loomisajast on möödunud vähem kui 7 päeva, kuid viimase näppimise ajast rohkem kui 2 päeva:
find / -ctime -7 -atime +2 -print
- Leiame näiteks .avi failid, mida muudeti vähem kui 15 päeva tagasi:
find / -name "*.avi" -mtime -15
- Kui tekib vajadus otsida faile täpsema ajavahemiku järgi kui üks päev, siis on olemas ka võimalus lugeda minuteid: otsime faile, mida on muudetud viimase 10 minuti jooksul:
find . -mmin -10 -print
Faili leidmine temas sisalduva stringi järgi
find-käsul on operaator nimega -exec {}, millega saab leitud faili kallal mõnda teist UNIXi käsku rakendada. Failis sisalduvat sõna teades tuleb faili otsida käskude find ja grep ristsugutise abil:
find /usr/doc -type f -exec grep "Uugametsa Kolla" {} \;
- Käsk otsibib (find) kataloogist /usr/doc allapoole läbi kõik failid (-type f) ning täidab igaühe ({}) kallal neist failidest käsu grep, mis omakorda otsib failist stringi "Uugametsa Kolla".
- Äraspidi kaldkriipsud selles näites on mõeldud C-Shelli (csh) ja Turbo-C-Shelli (tcsh) kasutajatele, et varjestada shelli eest metamärki (semikoolonit). Semikoolon ise märgib -exec-operaatori lõppu.
100000 faili kustutamine find käsku kasutades
Rm käsuga niisama ei õnnestu 100000 faili kustutada, andes errori, et argumentide nimekiri on liiga pikk. Lahenduseks on find käsk, mille abil on kerge suurt hulk faile kustutada.
- Kustutame näiteks kõikidest kataloogidest kõik .jpg laiendiga failid:
find . -name "*.jpg" -exec rm {} \;
- \; on seal vajalik süntaks lõpus! {} asemele hakatakse järjest panema otsitavaid asju mida find leiab.