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.
|
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 [AT] rs1.hu>