Provided by:
manpages-hu_20010119-5_all 
NÉV
find - fájlokat keres egy könyvtárstruktúrában
ÁTTEKINTÉS
find [útvonal...] [kifejezés]
LEÍRÁS
Ez a kézikönyv lap a find GNU változatát dokumentálja.
A 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 and kifejezés bal oldalán hamis, vagy egy
or kifejezés bal oldalán igaz feltétel van, az egyértelművé teszi az
egész kifejezés értékét. Ilyenkor a find nem vizsgálja tovább a
kifejezést.)
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.
A find kilépési állapota 0 ha minden fájlt sikeresen feldolgozott,
nagyobb, mint 0, ha valami hiba történt.
KIFEJEZÉSEK
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.
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.
OPCIÓK
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.
-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.
-depth A könyvtárak feldolgozása előtt tartalmukat dolgozza fel.
-follow
Nem a szimbolikus kötésekre hivatkozik, hanem az általuk
mutatott fájlra. Bekapcsolja -noleaf-ot is.
-help, --help
Egy összegzést ír ki a find használatáról, majd kilép.
-maxdepth levels
Legfeljebb levels (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.
-mindepth levels
A levels-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.
-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.)
-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.
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 find kihagyhatna alkönyvtárakat.
-version, --version
Kiírja a verziószámot és kilép.
-xdev Nem megy bele olyan alkönyvtárba, amely más fájlrendszeren van.
TESZTEK
Numerikus argumentumok az alábbi módon adhatók meg:
+n nagyobb mint n,
-n kisebb mint n,
n pontosan n.
-amin n
A fájl utoljára n perce lett használva.
-anewer file
A fájl utolsó használata frissebb, mint a file módosítási
dátuma. -anewer -t csak akkor befolyásolja a -follow, ha a
-follow előbb szerepel a parancssorban, mint -anewer.
-atime n
A fájl utoljára n*24 órája lett használva.
-cmin n
A fájl státusza n perce lett utoljára módosítva.
-cnewer file
A fájl utolsó státuszmódosítása frissebb, mint a file módosítási
dátuma. -cnewer -t csak akkor befolyásolja a -follow, ha a
-follow előbb szerepel a parancssorban, mint -cnewer.
-ctime n
A fájl státusza utoljára n*24 órája lett módosítva.
-empty A fájl üres. (Szabályos fájlra és könyvtárra is vonatkozik.)
-false Mindig hamis
-fstype type
A fájl type 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ó.
-gid n A fájl numerikus csoportazonosítója (group ID) n.
-group gname
A fájl a gname csoporthoz tartozik. (Numerikus érték is
megengedett.)
-ilname pattern
Ugyanaz, mint -lname, csak nem tesz különbséget a kis- és
nagybetűk között.
-iname pattern
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.
-inum n
A fájl inode száma n.
-ipath pattern
Ugyanaz, mint -path, csak nem tesz különbséget a kis- és
nagybetűk között.
-iregex pattern
Ugyanaz, mint -regex, csak nem tesz különbséget a kis- és
nagybetűk között.
-links n
A fájlnak n kötése van.
-lname pattern
A fájl egy szimbolikus kötés, melynek tartalma illeszkedik a
pattern burokmintára. A metakarakterek nem kezelik a `/'-t és a
`.'-t speciálisan.
-mmin n
A fájl adatai utoljára n perce lettek módosítva.
-mtime n
A fájl adatai utoljára n*24 órája lettek módosítva.
-name pattern
A fájlnév alapja (azaz a fájl elérési útja a bevezető könyvtárak
nélkül) illeszkedik a pattern 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.)
-newer file
A fájl frissebben lett módosítva, mint file. -newer -t csak
akkor befolyásolja a -follow, ha a -follow előbb szerepel a
parancssorban, mint -newer.
-nouser
Nincs a fájl numerikus felhasználói azonosítójának (user ID)
megfelelő felhasználó.
-nogroup
Nincs a fájl numerikus csoportazonosítójának (group ID)
megfelelő csoport.
-path pattern
A fájlnév illeszkedik a pattern burokmintához. A metakarakterek
nem kezelik `/'-t és `.'-t speciálisan. Például:
find . -path './sr*sc'
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 többi fájl nevének nyomtatása megvalósítható a
következő módon:
find . -path './src/emacs' -prune -o -print
-perm mode
A fájl engedélybitjei pontosan a mode -nak megfelelőek. A mode
megadása lehet oktális vagy szimbolikus. Szimbolikus esetben a 0
mód a kiindulás.
-perm -mode
A mode minden engedélybitje be van állítva a fájlra is.
-perm +mode
A mode engedélybitjeinek valamelyike be van állítva a fájlra is.
-regex pattern
A fájlnév illeszkedik a pattern 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.
-size n[bckw]
A fájl mérete n 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'.
-true Mindig igaz.
-type c
A fájl c típusú, ahol a lehetséges értékek:
b blokkos (pufferelt) speciális eszközfájl
c karakteres (nem pufferelt) speciális eszközfájl
d könyvtár
p csőhálózat (named pipe, FIFO)
f szabályos fájl
l szimbolikus kötés
s socket
-uid n A fájl numerikus felhasználói azonosítója (user ID) n.
-used n
A fájl utoljára n nappal a státusza megváltoztatása után volt
használatban.
-user uname
A fájl a uname felhasználó tulajdonában van. (Numerikus érték is
megengedett.)
-xtype c
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 c típusú fájlra mutató link; amennyiben
-follow is adott, igaz, ha c 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.
AKCIÓK
-exec command ;
Végrehajtja a command parancsot. Értéke igaz, ha a parancs 0
státuszt ad vissza. A következő `;'-ig a 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 `\'
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.
-fls file
Igaz; ugyanaz, mint -ls, csak a file-ba ír. (Az -fprint -hez
hasonlóan.)
-fprint file
Igaz. A teljes fájlnevet a file fájlba írja. Amennyiben a file
nem létezik a find futtatásakor, a find 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.
-fprint0 file
Igaz; ugyanaz, mint -print0, csak azfile fájlba ír. (Az -fprint
-hez hasonlóan.)
-fprintf file format
Igaz; ugyanaz, mint -printf, csak azfile fájlba ír. (Az -fprint
-hez hasonlóan.)
-ok command ;
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.
-print Igaz; a fájl teljes nevét, majd egy újsor-jelet a szabványos
kimenetre írja.
-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 find kimenetét feldolgozó programok jól
működjenek.
-printf format
Igaz; a format által megadott formátumban nyomtat a a standard
kimenetre. Értelmezi a `\' é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:
\a Figyelmeztető csengő (alarm bell).
\b Fordított törtvonal (backspace).
\c Ezen formátumból való nyomtatást megállítja és kiírja
(flush) a kimenetet.
\f Soremelés (form feed).
\n Újsor (newline).
\r Kocsi vissza (carriage return).
\t Vízszintes tabulátor (horizontal tab).
\v Függőleges tabulátor (vertical tab).
\\ Betű szerinti fordított törtvonal (literal backslash,
`\').
Egy `\', majed egy másik karakter rendes karakterként
viselkedik, azaz mindegyik kinyomtatásra kerül.
%% Betű szerinti százalékjel.
%a A fálj utolsó elérési ideje a C `ctime' függvényének
formátumában.
%Ak A fálj utolsó elérési ideje a k által megadott
formátumban. Ez lehet `@', vagy egy direktíva a C
`strftime' függvényének megfelelően. k 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.
@ 1970. január 1. 00:00 GMT óta eltelt másodpercek.
Időmezők:
H óra (00..23)
I óra (01..12)
k óra ( 0..23)
l óra ( 1..12)
M perc (00..59)
p a `locale'-nak megfelelő AM vagy PM
r idő 12 órás formátumban (hh:mm:ss [AP]M)
S másodperc (00..61)
T idő 24 órás formátumban (hh:mm:ss)
X a `locale'-nak megfelelő időjelzés (H:M:S)
Z időzóna (pl. EDT) vagy semmi, ha az időzóna nem
meghatározható
Dátum mezők:
a a `locale'-nak megfelelő rövidített napnév (pl.
Sun..Sat)
A a `locale'-nak megfelelő teljes napnév (pl.
Sunday..Saturday)
b a `locale'-nak megfelelő rövidített hónapnév (pl.
Jan..Dec)
B a `locale'-nak megfelelő teljes hónapnév (pl.
January..December)
c a `locale'-nak megfelelő dátum és idő (pl. Sat
Nov 04 12:02:33 EST 1989)
d a hónap napja (01..31)
D dátum (mm/dd/yy)
h ugyanaz, mint b
j az év napja (001..366)
m hónap (01..12)
U az év hányadik hetéről van szó, ha vasárnappal
kezdjük a heteket (00..53)
w a hét hányadik napja (0..6)
W az év hányadik hetéről van szó, ha hétfővel
kezdjük a heteket (00..53)
x a `locale'-nak megfelelő dátum (pl. mm/dd/yy)
y az év utolsó két jegye (00..99)
Y év (1970...)
%b A fájlméret 512 bájtos blokkokban (felkerekítve).
%c A fájl státuszának utolsó megváltoztatási ideje a C
`ctime' függvényének formátumában.
%Ck A fájl státuszának utolsó megváltoztatási ideje a k
formátum által megadott módon (%A-hoz hasonlóan).
%d A fájl mélysége a könyvtárfában. A 0 azt jelenti, hogy a
fájl parancssori argumentum volt.
%f A fájl neve a bevezető könyvtárnevek nélkül.
%F A fájlrendszer neve. Ez az érték használható az -fstype-
nál.
%g A fájl csoportneve vagy a numerikus csoportazonosító, ha
nincs neve a csoportnak.
%G A fájl numerikus csoportazonosítója.
%h A teljes fájnév bevezető könyvtárnevei.
%H Azon parancssori argumentumok, melyek alatt nem talált
fájlt a find.
%i A fájl inode száma decimálisan.
%k A fájl mérete 1K blokkokban (felkerekítve).
%l A szimbolikus kötés célja. (Üres, ha a fájl nem
szimbolikus kötés.)
%m A fájl engedélybitjei oktálisan.
%n A fájl kemény kötéseinek száma.
%p A fájl (teljes) neve.
%P A fájl neve azon parancssori argumentum nélkül, amely
alatt megtalálta a find.
%s A fájl mérete bájtokban.
%t A fájl utolsó módosítási ideje a C `ctime' függvényének
formátumában.
%Tk A fájl utolsó módosítási ideje a k által megadott
formában. (Lásd %A-nál.)
%u A fájl tulajdonosának neve, vagy numerikus felhasználói
azonosítója, ha nincs neve a felhasználónak.
%U A fájl tulajdonosának numerikus felhasználói azonosítója.
A `%' jel után álló bármely más karakter esetén csak a megadott
karakter íródik ki.
-prune Ha nincs -depth megadva, akkor igaz. Nem megy bele az aktuális
könyvtárba.
Ha -depth adott, akkor hamis és nincs hatása.
-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.
OPERÁTOROK
Az operátorokat csökkenő precedenciasorrendben listázzuk:
( expr )
Precedencia változtatás.
! expr Igaz, ha az expr kifejezés hamis.
-not expr
Ugyanaz, mint ! expr.
expr1 expr2
Logikai és. Nem értékeli ki expr2-t, ha expr1 hamis.
expr1 -a expr2
Ugyanaz, mint expr1 expr2.
expr1 -and expr2
Ugyanaz, mint expr1 expr2.
expr1 -o expr2
Logikai vagy. expr2-t nem értékeli ki, ha expr1 igaz.
expr1 -or expr2
Ugyanaz, mint expr1 -o expr2.
expr1 , expr2
Listáz. expr1 és expr2 is mindig kiértékelésre kerül. expr1
értéke nem számít, a lista expr2 értékét adja vissza.
LÁSD MÉG
locate(1), locatedb(5), updatedb(1), xargs(1) Finding Files (Info fájl,
vagy nyomtatott változat)
MAGYAR FORDÍTÁS
Horváth András <horvatha@rs1.szif.hu>
FIND(1)