.TH FIND 1 \" -*- nroff -*- .SH NÉV find \- fájlokat keres egy könyvtárstruktúrában .SH ÁTTEKINTÉS .B find [útvonal...] [kifejezés] .SH LEÍRÁS Ez a kézikönyv lap a .BR find GNU változatát dokumentálja. .PP A .B find program a megadott fájloktól induló könyvtárfában keres a megadott kifejezés balról jobbra való kiértékelésével. A program által figyelembe vett precedenicaszabályokat lásd az OPERÁTOROK fejezetetben. Mihelyt egyértelmű, hogy egy fájl megfelel-e a kifejezésnek, a következő fájl vizsgálatába kezd. (Nem feltétlen értékeli ki tehát a teljes kifejezést. Pl. ha egy \fIand\fR kifejezés bal oldalán hamis, vagy egy \fIor\fR kifejezés bal oldalán igaz feltétel van, az egyértelművé teszi az egész kifejezés értékét. Ilyenkor a .B find nem vizsgálja tovább a kifejezést.) .PP Az első argumentum, amely `\-', `(', `)', `,', vagy `!' jellel kezdődik jelenti a kifejezés elejét. Az ez előtti argumentumokat keresési útvonalaknak veszi a program, az ez utániakat a kifejezés további részeként. Ha nincs útvonal megadva, az aktuális könyvtárból indul a keresés. Ha pedig nincs kifejezés megadva, a `-print' lesz használva. .PP A .B find kilépési állapota 0 ha minden fájlt sikeresen feldolgozott, nagyobb, mint 0, ha valami hiba történt. .SH KIFEJEZÉSEK .P A kifejezés opciókból, tesztekből és akciókból áll, melyeket operátorok választanak el egymástól. Az opciók a teljes műveletet befolyásolják, nemcsak egy fájlra vonatkoznak, és mindig igaz a visszatérési értékük. A tesztek igaz és hamis értéket egyaránt visszaadhatnak. Az akcióknak oldalhatásuk (side effect) van, és igaz vagy hamis értékkel is visszatérhetnek. .PP Az operátor elhagyható, ilyenkor az alapértelmezett \-and kerül behelyettesítésre. Amennyiben a kifejezés a \-prune -on kívül nem tartalmaz akciót, a \-print lesz végrehajtva minden fájlra, melyre a kifejezés igaz. .SH OPCIÓK .P Minden opció mindig igaz értéket ad vissza. Mindig hatnak, nemcsak akkor, amikor a feldolgozás eljut a helyükre. Ezért az áttekinthetőség kedvéért a kifejezés elejére célszerű tenni őket. .IP \-daystart Az időpontokat (\-amin, \-atime, \-cmin, \-ctime, \-mmin, és \-mtime esete) a mai nap kezdetétől számítja, nem 24 órával ezelőttől. .IP \-depth A könyvtárak feldolgozása előtt tartalmukat dolgozza fel. .IP \-follow Nem a szimbolikus kötésekre hivatkozik, hanem az általuk mutatott fájlra. Bekapcsolja \-noleaf-ot is. .IP "\-help, \-\-help" Egy összegzést ír ki a .B find használatáról, majd kilép. .IP "\-maxdepth \fIlevels\fR" Legfeljebb \fIlevels\fR (ez egy nemnegatív szám) mélységben megy bele a könyvtárstruktúrába. `\-maxdepth 0' azt jelenti, hogy csak a parancssorban argumentumként megadott fájlokra kell a teszteket és az akciókat végrehajtani. .IP "\-mindepth \fIlevels\fR" A \fIlevels\fR-ben adott nemnegatív egésznél kisebb mélységben nem alkalmaz egyetlen tesztet vagy akciót sem. `\-mindepth 1' azt jelenti, hogy a parancssori argumentumokat nem, csak az alattuk levő könyvtárakat dolgozza fel. .IP \-mount Nem megy bele olyan alkönyvtárba, amely más fájlrendszeren van. Ugyanaz, mint \-xdev. (Csak kompatibilitási okokból került implementálásra.) .IP "\-noleaf" Nem használja azt a feltevést, hogy a könyvtárak kettővel kevesebb alkönyvtárat tartalmaznak, mint a kemény kötéseik száma. Erre olyankor van szükség, amikor a keresés olyan fájlrendszeren történik, amelyik nem követi a Unix könyvtárkonvencióit, mint pl. az MS-DOS vagy a CD-ROM-ok. .PP Unix alatt ugyanis minden könyvtárnak van két kemény kötése: a saját neve és a `.' bejegyzés. Továbbá, minden alkönyvtárának van egy `..' bejegyzése, amely rá vonatkozik. Ezért tehát a Unix-ban egy könyvtár kemény kötéseinek száma mindig kettővel több alkönyvtárainak számánál. Ennek felhasználásával a keresés Unix rendszereken jelentősen gyorsítható, mert a kemény kötések számánál kettővel kevesebb alkönyvtár megvizsgálása után nem kell továbbiakat keresni, azaz nem kell egy csomó másik fájlt vizsgálni, hisz azok biztosan normális, azaz "levél" (leaf) fájlok. Ez a feltételezés természetesen nem igaz más rendszerekben, így ott .B find kihagyhatna alkönyvtárakat. .IP "\-version, \-\-version" Kiírja a verziószámot és kilép. .IP \-xdev Nem megy bele olyan alkönyvtárba, amely más fájlrendszeren van. .SH TESZTEK .P Numerikus argumentumok az alábbi módon adhatók meg: .IP \fI+n\fP nagyobb mint .IR n , .IP \fI\-n\fP kisebb mint .IR n , .IP \fIn\fP pontosan .IR n . .IP "\-amin \fIn\fR" A fájl utoljára \fIn\fR perce lett használva. .IP "\-anewer \fIfile\fR" A fájl utolsó használata frissebb, mint a \fIfile\fR módosítási dátuma. \-anewer -t csak akkor befolyásolja a \-follow, ha a \-follow előbb szerepel a parancssorban, mint \-anewer. .IP "\-atime \fIn\fR" A fájl utoljára \fIn\fR*24 órája lett használva. .IP "\-cmin \fIn\fR" A fájl státusza \fIn\fR perce lett utoljára módosítva. .IP "\-cnewer \fIfile\fR" A fájl utolsó státuszmódosítása frissebb, mint a \fIfile\fR módosítási dátuma. \-cnewer -t csak akkor befolyásolja a \-follow, ha a \-follow előbb szerepel a parancssorban, mint \-cnewer. .IP "\-ctime \fIn\fR" A fájl státusza utoljára \fIn\fR*24 órája lett módosítva. .IP \-empty A fájl üres. (Szabályos fájlra és könyvtárra is vonatkozik.) .IP \-false Mindig hamis .IP "\-fstype \fItype\fR" A fájl \fItype\fR típusú fájlrendszeren van. Az érvényes fájlrendszer-típusok a Unix változataitól függenek. Egy nem teljes lista a Unix rendszerek alatt előforduló fájlrendszerekről: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. (Linux alatt a legjellemzőbbek: ext2, msdos, minix, iso9660, vfat.) A \-printf a %F direktívával a fájlrendszer típusának megállapítására használható. .IP "\-gid \fIn\fR" A fájl numerikus csoportazonosítója (group ID) \fIn\fR. .IP "\-group \fIgname\fR" A fájl a \fIgname\fR csoporthoz tartozik. (Numerikus érték is megengedett.) .IP "\-ilname \fIpattern\fR" Ugyanaz, mint \-lname, csak nem tesz különbséget a kis- és nagybetűk között. .IP "\-iname \fIpattern\fR" Ugyanaz, mint \-name, csak nem tesz különbséget a kis- és nagybetűk között. Páldául a `fo*' és `F??' minták illeszkednek a `Foo', `FOO', `foo', `fOo' fájlnevekhez is. .IP "\-inum \fIn\fR" A fájl inode száma \fIn\fR. .IP "\-ipath \fIpattern\fR" Ugyanaz, mint \-path, csak nem tesz különbséget a kis- és nagybetűk között. .IP "\-iregex \fIpattern\fR" Ugyanaz, mint \-regex, csak nem tesz különbséget a kis- és nagybetűk között. .IP "\-links \fIn\fR" A fájlnak \fIn\fR kötése van. .IP "\-lname \fIpattern\fR" A fájl egy szimbolikus kötés, melynek tartalma illeszkedik a \fIpattern\fR burokmintára. A metakarakterek nem kezelik a `/'-t és a `.'-t speciálisan. .IP "\-mmin \fIn\fR" A fájl adatai utoljára \fIn\fR perce lettek módosítva. .IP "\-mtime \fIn\fR" A fájl adatai utoljára \fIn\fR*24 órája lettek módosítva. .IP "\-name \fIpattern\fR" A fájlnév alapja (azaz a fájl elérési útja a bevezető könyvtárak nélkül) illeszkedik a \fIpattern\fR burokmintához. A metakarakterek (`*', `?' és `[]') nem illeszkednek a fájl alapneve elején található `.'-hoz. Egy könyvtár és az alatta levő fájlok figyelmen kívül hagyására a \-prune használható. (Lásd a \-path leírásánál levő példát.) .IP "\-newer \fIfile\fR" A fájl frissebben lett módosítva, mint \fIfile\fR. \-newer -t csak akkor befolyásolja a \-follow, ha a \-follow előbb szerepel a parancssorban, mint \-newer. .IP \-nouser Nincs a fájl numerikus felhasználói azonosítójának (user ID) megfelelő felhasználó. .IP \-nogroup Nincs a fájl numerikus csoportazonosítójának (group ID) megfelelő csoport. .IP "\-path \fIpattern\fR" A fájlnév illeszkedik a \fIpattern\fR burokmintához. A metakarakterek nem kezelik `/'-t és `.'-t speciálisan. Például: .br .in +1i find . \-path './sr*sc' .br .in -1i kinyomtat egy bejegyzést a './src/misc' könyvtárról, ha az létezik. Egy teljes könyvtárfa figyelmen kívül hagyásához a \-prune használható a fa minden fájljának ellenőrzése helyett. Például a 'src/emacs' és minden fájljának illetve alkönyvtárának átlépése, és a többi fájl nevének nyomtatása megvalósítható a következő módon: .br .in +1i find . \-path './src/emacs' -prune -o -print .br .in -1i .IP "\-perm \fImode\fR" A fájl engedélybitjei pontosan a \fImode\fR -nak megfelelőek. A \fImode\fR megadása lehet oktális vagy szimbolikus. Szimbolikus esetben a 0 mód a kiindulás. .IP "\-perm \-\fImode\fR" A \fImode\fR minden engedélybitje be van állítva a fájlra is. .IP "\-perm +\fImode\fR" A \fImode\fR engedélybitjeinek valamelyike be van állítva a fájlra is. .IP "\-regex \fIpattern\fR" A fájlnév illeszkedik a \fIpattern\fR szabályos kifejezéshez. Az illeszkedés a teljes elérési útra vonatkozik, nem a keresésre. Például egy `./fubar3' fájlhoz való illeszkedésre használható a `.*bar.' vagy `.*b.*3' szabályos kifejezés, de a `b.*r3' nem. .IP "\-size \fIn\fR[bckw]" A fájl mérete \fIn\fR egységnyi. Az egység az 512-bájtos blokk alapértelmezésben vagy `b' végződés esetén, bájt, ha a végződés `c', kilobájt, ha a végződés `k', 2-bájtos szó, ha a végződés `w'. .IP \-true Mindig igaz. .IP "\-type \fIc\fR" A fájl \fIc\fR típusú, ahol a lehetséges értékek: .RS .IP b blokkos (pufferelt) speciális eszközfájl .IP c karakteres (nem pufferelt) speciális eszközfájl .IP d könyvtár .IP p csőhálózat (named pipe, FIFO) .IP f szabályos fájl .IP l szimbolikus kötés .IP s socket .RE .IP "\-uid \fIn\fR" A fájl numerikus felhasználói azonosítója (user ID) \fIn\fR. .IP "\-used \fIn\fR" A fájl utoljára \fIn\fR nappal a státusza megváltoztatása után volt használatban. .IP "\-user \fIuname\fR" A fájl a \fIuname\fR felhasználó tulajdonában van. (Numerikus érték is megengedett.) .IP "\-xtype \fIc\fR" Ugyanaz, mint \-type, hacsak nem a fájl szimbolikus kötés. Ebbean az esetben: ha \-follow nem adott, akkor igaz az értéke amennyiben a fájl egy \fIc\fR típusú fájlra mutató link; amennyiben \-follow is adott, igaz, ha \fIc\fR egyenlő `l'-lel. Más szavakkal: szimbolikus kötés esetén \-xtype annak a fájlnak a típusát vizsgálja, amit \-type nem vizsgál. .SH AKCIÓK .IP "\-exec \fIcommand\fR ;" Végrehajtja a \fIcommand\fR parancsot. Értéke igaz, ha a parancs 0 státuszt ad vissza. A következő `;'-ig a .B find minden argumentumát a parancs argumentumának veszi. A `{}' string az aktuálisan feldolgozás alatt álló fájl nevével helyettesítődik. Ezen szerkezeteket esetlegesen meg kell védeni (a `\e' használatával) attól, hogy a burok kifejtese őket. A parancs végrehajtása a kiindulási könyvtárból történik. .IP "\-fls \fIfile\fR" Igaz; ugyanaz, mint \-ls, csak a \fIfile\fR-ba ír. (Az \-fprint -hez hasonlóan.) .IP "\-fprint \fIfile\fR" Igaz. A teljes fájlnevet a \fIfile\fR fájlba írja. Amennyiben a \fIfile\fR nem létezik a \fIfind\fR futtatásakor, a \fIfind\fR létrehozza, ha pedig létezik, csonkolja. A ``/dev/stdout'' és ``/dev/stderr'' fájlenevket speciálisan kezeli: a szabványos kimenetre és szabványos bemenetre vonatkoznak. .IP "\-fprint0 \fIfile\fR" Igaz; ugyanaz, mint \-print0, csak az\fIfile\fR fájlba ír. (Az \-fprint -hez hasonlóan.) .IP "\-fprintf \fIfile\fR \fIformat\fR" Igaz; ugyanaz, mint \-printf, csak az\fIfile\fR fájlba ír. (Az \-fprint -hez hasonlóan.) .IP "\-ok \fIcommand\fR ;" Ugyanaz, mint \-exec, de először megkérdezi a felhasználót a standard bemeneten. Amennyiben a válasz nem `y'-nal vagy `Y'-nal kezdődik, nem futtatja a parancsot, és hamis értékkel tér vissza. .IP \-print Igaz; a fájl teljes nevét, majd egy újsor-jelet a szabványos kimenetre írja. .IP \-print0 Igaz; a fájl teljes nevét, majd egy null-karaktert a standard kimenetre írja. Ez megengedi, hogy újsor-jelet tartalmazó fájlnevek esetén a \fIfind\fR kimenetét feldolgozó programok jól működjenek. .IP "\-printf \fIformat\fR" Igaz; a \fIformat\fR által megadott formátumban nyomtat a a standard kimenetre. Értelmezi a `\e' és `%' direktívákat. Mezőszélesség és pontosság a C-beli `printf'-fel megegyező módon adható meg. A \-print-től eltérően \-printf nem ír ki automatikusan újsorjelet a kimenetre. A direktívák a következők lehetnek: .RS .IP \ea Figyelmeztető csengő (alarm bell). .IP \eb Fordított törtvonal (backspace). .IP \ec Ezen formátumból való nyomtatást megállítja és kiírja (flush) a kimenetet. .IP \ef Soremelés (form feed). .IP \en Újsor (newline). .IP \er Kocsi vissza (carriage return). .IP \et Vízszintes tabulátor (horizontal tab). .IP \ev Függőleges tabulátor (vertical tab). .IP \e\e Betű szerinti fordított törtvonal (literal backslash, `\e'). .PP Egy `\e', majed egy másik karakter rendes karakterként viselkedik, azaz mindegyik kinyomtatásra kerül. .IP %% Betű szerinti százalékjel. .IP %a A fálj utolsó elérési ideje a C `ctime' függvényének formátumában. .IP %A\fIk\fP A fálj utolsó elérési ideje a \fIk\fR által megadott formátumban. Ez lehet `@', vagy egy direktíva a C `strftime' függvényének megfelelően. \fIk\fR lehetséges értékeit a következőkben megadjuk. Néhány közülük nem minden rendszeren elérhető a `strftime' függvények rendszerfüggősége miatt. .RS .IP @ 1970. január 1. 00:00 GMT óta eltelt másodpercek. .PP Időmezők: .IP H óra (00..23) .IP I óra (01..12) .IP k óra ( 0..23) .IP l óra ( 1..12) .IP M perc (00..59) .IP p a `locale'-nak megfelelő AM vagy PM .IP r idő 12 órás formátumban (hh:mm:ss [AP]M) .IP S másodperc (00..61) .IP T idő 24 órás formátumban (hh:mm:ss) .IP X a `locale'-nak megfelelő időjelzés (H:M:S) .IP Z időzóna (pl. EDT) vagy semmi, ha az időzóna nem meghatározható .PP Dátum mezők: .IP a a `locale'-nak megfelelő rövidített napnév (pl. Sun..Sat) .IP A a `locale'-nak megfelelő teljes napnév (pl. Sunday..Saturday) .IP b a `locale'-nak megfelelő rövidített hónapnév (pl. Jan..Dec) .IP B a `locale'-nak megfelelő teljes hónapnév (pl. January..December) .IP c a `locale'-nak megfelelő dátum és idő (pl. Sat Nov 04 12:02:33 EST 1989) .IP d a hónap napja (01..31) .IP D dátum (mm/dd/yy) .IP h ugyanaz, mint b .IP j az év napja (001..366) .IP m hónap (01..12) .IP U az év hányadik hetéről van szó, ha vasárnappal kezdjük a heteket (00..53) .IP w a hét hányadik napja (0..6) .IP W az év hányadik hetéről van szó, ha hétfővel kezdjük a heteket (00..53) .IP x a `locale'-nak megfelelő dátum (pl. mm/dd/yy) .IP y az év utolsó két jegye (00..99) .IP Y év (1970...) .RE .IP %b A fájlméret 512 bájtos blokkokban (felkerekítve). .IP %c A fájl státuszának utolsó megváltoztatási ideje a C `ctime' függvényének formátumában. .IP %C\fIk\fP A fájl státuszának utolsó megváltoztatási ideje a \fIk\fR formátum által megadott módon (%A-hoz hasonlóan). .IP %d A fájl mélysége a könyvtárfában. A 0 azt jelenti, hogy a fájl parancssori argumentum volt. .IP %f A fájl neve a bevezető könyvtárnevek nélkül. .IP %F A fájlrendszer neve. Ez az érték használható az \-fstype-nál. .IP %g A fájl csoportneve vagy a numerikus csoportazonosító, ha nincs neve a csoportnak. .IP %G A fájl numerikus csoportazonosítója. .IP %h A teljes fájnév bevezető könyvtárnevei. .IP %H Azon parancssori argumentumok, melyek alatt nem talált fájlt a \fIfind\fR. .IP %i A fájl inode száma decimálisan. .IP %k A fájl mérete 1K blokkokban (felkerekítve). .IP %l A szimbolikus kötés célja. (Üres, ha a fájl nem szimbolikus kötés.) .IP %m A fájl engedélybitjei oktálisan. .IP %n A fájl kemény kötéseinek száma. .IP %p A fájl (teljes) neve. .IP %P A fájl neve azon parancssori argumentum nélkül, amely alatt megtalálta a \fIfind\fR. .IP %s A fájl mérete bájtokban. .IP %t A fájl utolsó módosítási ideje a C `ctime' függvényének formátumában. .IP %T\fIk\fP A fájl utolsó módosítási ideje a \fIk\fR által megadott formában. (Lásd %A-nál.) .IP %u A fájl tulajdonosának neve, vagy numerikus felhasználói azonosítója, ha nincs neve a felhasználónak. .IP %U A fájl tulajdonosának numerikus felhasználói azonosítója. .PP A `%' jel után álló bármely más karakter esetén csak a megadott karakter íródik ki. .RE .IP \-prune Ha nincs \-depth megadva, akkor igaz. Nem megy bele az aktuális könyvtárba. .br Ha \-depth adott, akkor hamis és nincs hatása. .IP \-ls Igaz. listázza az aktuális fájlt `ls \-dils' formában a standard kimenetre. A blokkméret 1K, hacsak nem a POSIXLY_CORRECT környezeti változónak értéket adtunk. Ekkor 512 bájtos blokkmérettel számol. .SH OPERÁTOROK .P Az operátorokat csökkenő precedenciasorrendben listázzuk: .IP "( \fIexpr\fR )" Precedencia változtatás. .IP "! \fIexpr\fR" Igaz, ha az \fIexpr\fR kifejezés hamis. .IP "\-not \fIexpr\fR" Ugyanaz, mint ! \fIexpr\fR. .IP "\fIexpr1 expr2\fR" Logikai és. Nem értékeli ki \fIexpr2\fR-t, ha \fIexpr1\fR hamis. .IP "\fIexpr1\fR \-a \fIexpr2\fR" Ugyanaz, mint \fIexpr1 expr2\fR. .IP "\fIexpr1\fR \-and \fIexpr2\fR" Ugyanaz, mint \fIexpr1 expr2\fR. .IP "\fIexpr1\fR \-o \fIexpr2\fR" Logikai vagy. \fIexpr2\fR-t nem értékeli ki, ha \fIexpr1\fR igaz. .IP "\fIexpr1\fR \-or \fIexpr2\fR" Ugyanaz, mint \fIexpr1\fR \-o \fIexpr2\fR. .IP "\fIexpr1\fR , \fIexpr2\fR" Listáz. \fIexpr1\fR és \fIexpr2\fR is mindig kiértékelésre kerül. \fIexpr1\fR értéke nem számít, a lista \fIexpr2\fR értékét adja vissza. .SH LÁSD MÉG \fBlocate\fP(1), \fBlocatedb\fP(5), \fBupdatedb\fP(1), \fBxargs\fP(1) \fBFinding Files\fP (Info fájl, vagy nyomtatott változat) .SH MAGYAR FORDÍTÁS Horváth András