A Linux és a Unix parancs megtalálja a fájlok keresését a könyvtár hierarchiában.
A Find parancs szintaxisa:
megtalálja [útvonal ...] [kifejezés]
Leírás
Ez a kézikönyv oldal a találatok GNU verzióját dokumentálja. A parancs megtalálja az egyes adott fájlneveken gyökerező könyvtárfát az adott kifejezés balról jobbra történő értékelésekor, a precedens szabályainak megfelelően (lásd az alábbi operátorok részt), amíg az eredményt nem ismerjük; Más szavakkal, a bal oldali oldal hamis és működik, igaz, vagy arra a pillanatra, hogy a keresés a következő fájlnévre ugrik.
Az első argumentum, amely a következővel kezdődik:
- -
- ( vagy )
- ,
- !
a kifejezés kezdetének tekintendő; minden argumentum, mielőtt elérné a keresési útvonalakat, és az utána következő érvek a kifejezés többi része. Ha nincs megadva útvonal, akkor az aktuális könyvtárat használjuk. Ha nincs kifejezés, akkor a kifejezés -printet használjuk.
A Find parancs kilép a 0-as állapotból, ha minden fájl sikeresen feldolgozva van, nagyobb, mint 0, ha hiba történik.
kifejezések
A kifejezés olyan opciókból áll (amelyek az egész műveletet befolyásolják, nem pedig egy adott fájl feldolgozását, és mindig mindig visszaadnak), a tesztek (amelyek visszaadják az igaz vagy hamis értéket) és az akciókat (amelyeknek mellékhatásai vannak és visszatérnek egy valódi vagy hamis érték), mindegyiket operátorok választják el. A kifejezés - és feltételezzük, hogy az operátor el van hagyva. Ha a kifejezés nem tartalmaz olyan műveleteket, mint a -prune , akkor a -print minden olyan fájlra kerül, amelyre a kifejezés igaz.
Lehetőségek
Valamennyi lehetőség mindig igaz. Mindig hatással vannak, és nem csak feldolgozásra kerülnek, amikor a kifejezés helyét elérik. Ezért az egyértelműség kedvéért célszerű a kifejezés elején elhelyezni őket.
-daystart | Az idő mérése (az -amin, az -ime, a -cmin, a -ctime, a -min és a -mtime ) a mai nap kezdetén, nem pedig 24 órával ezelőtt. |
-mélység | Minden könyvtár tartalmának feldolgozása a könyvtár előtt. |
-kövesse | Dereferencia szimbolikus linkek. A következőket jelenti: -noleaf . |
-help vagy -segít | Nyomtassa ki a keresés és a kilépés parancssori használatának összefoglalóját. |
-maxdepth [szám] | Legfeljebb a parancssori argumentumok alatti könyvtárak szintjének (nem negatív egészének) lejtése. A -maxdepth 0 kifejezés csak a teszteket és műveleteket alkalmazza a parancssori argumentumokra. |
-mindepth [szám] | Ne alkalmazzon semmilyen tesztet vagy műveletet a számnál kisebb szinteken (nem negatív egész szám). Az " indefinite" kifejezés az összes fájlt feldolgozza, kivéve a parancssori argumentumokat. |
-hegy | Ne engedje le a könyvtárakat más fájlrendszereken. Az -xdev alternatív neve, a kompatibilitás a találatok más verzióival. |
-noleaf | Ne optimizálja úgy, hogy a könyvtárak 2 kisebb alkönyvtárat tartalmaznak, mint a keményláncok száma. * |
-verzió vagy -verzió | Nyomtassa ki a találati verziószámot és lépjen ki. |
-xdev | Ne engedje le a könyvtárakat más fájlrendszereken. |
* Ez az opció akkor szükséges, ha olyan fájlrendszereket keres, amelyek nem követik a Unix könyvtár-link konvenciót, például a CD-ROM vagy MS-DOS fájlrendszereket vagy az AFS kötet-csatolási pontokat. Minden normál Unix fájlrendszeren található könyvtár legalább 2 kemény hivatkozást tartalmaz: a neve és a neve . (periódus) bejegyzést. Továbbá, annak alkönyvtárai (ha vannak ilyenek) mindegyike rendelkezik egy .. bejegyzéssel, amely ehhez a könyvtárhoz kapcsolódik.
Amikor egy könyvtár megvizsgálja a könyvtárat, miután két kisebb alkönyvtárba rendelt, mint a könyvtár hivatkozási számát, tudja, hogy a könyvtár többi bejegyzése nem könyvtárak ( levélfájlok a könyvtárfában). Ha csak a fájlok nevét kell megvizsgálni, nincs szükség statisztikákra; ez jelentősen növeli a keresési sebességet.
vizsgálatok
A numerikus argumentumok meghatározhatók:
+ n | Több mint n. |
-n | Kevesebb mint n. |
n | Pontosan n. |
-amin n | A fájlt legutóbb elérte n perc. |
-anewer [fájl] | A fájlt legutóbb a legutóbb használták, mint a fájl módosítása. - az új változatot csak akkor követi, ha - a követés előbb - újból a parancssorban van. |
-matime n | A fájl legutóbb n * 24 órával ezelőtt érkezett. |
-cmin n | A fájl állapotát az utolsó perc elteltével módosították. |
-cnewer [fájl] | A fájl állapota legutóbb megváltozott, mint a fájl módosítása. - a cnewer -et csak akkor követi, ha a -window -cnewer lesz a parancssorban. |
-negyed n | A fájl állapota utolsó módosítása n * 24 órája. |
-üres | A fájl üres és rendszeres fájl vagy könyvtár. |
-hamis | Mindig hamis. |
-fstype [típus] | A fájl meghatározott típusú fájlrendszeren van. Az érvényes fájlrendszer típusai különböznek a Unix különböző verziói között; a Unix valamelyik verzióján elfogadott fájlrendszertípusok hiányos listája: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Használhatja a -printf-t a% F direktíva segítségével, hogy megtekinthesse a fájlrendszerek típusát. |
-gid n | A fájl numerikus csoportazonosítója n . |
-group [gname] | A fájl a gname csoporthoz tartozik (engedélyezett numerikus csoport azonosítója). |
-név [minta] | Mint a -lname, de a meccsen a kis-és nagybetűk nem érzékenyek. |
-iname [minta] | Mint -name , de a meccsen az eset nem érzékeny. Például a * és F * mintázatok illeszkedjen a Foo , FOO , foo , fOo fájlnevekhez . |
-inum n | A fájl rendelkezik inode számmal n . |
-apat [minta] | Mint a path , de a meccs a kisbetűk érzéketlen. |
-iregex [minta] | Mint a -regex, de a meccsen az eset nem érzékeny. |
-links n | A fájlnak n kapcsolata van. |
-neve [minta] | A fájl egy szimbolikus link, amelynek tartalma egyezik a shell mintával. A metakarakterek nem kezelik / . különösen. |
-mmin n | A fájl adatai utolsó perccel ezelőtt módosultak. |
-mtime n | A fájl adatai utolsó módosítása n * 24 órával ezelőtt történt. |
-name [minta] | A fájlnév alapja (az eltávolított vezető könyvtárak elérési útvonala) illeszkedik a shell mintához. A metakarakterek ( * , ? , És [] ) nem felelnek meg a . az alapnév kezdetén. Ha figyelmen kívül hagyja a könyvtárat és a benne lévő fájlokat, használja a -prune parancsot ; nézze meg a példát a -path leírásban. |
-newer [fájl] | A fájlt nemrégiben módosították, mint a fájl . Az "új csatorna" kifejezést csak akkor követi, ha a -window -newer lesz a parancssorban. |
-nouser | Egyetlen felhasználó sem felel meg a fájl számszerû felhasználói azonosítójának. |
-nogroup | Nincs olyan csoport, amely megfelel a fájl numerikus csoportazonosítójának. |
-path [minta] | A fájlnév illeszkedik a shell minta mintához . A metakarakterek nem kezelik / . különösen; így például megtalálni. A "-path" ./sr*sc egy bejegyzést ír ki a ./src/misc nevű könyvtárba (ha van ilyen). Ha figyelmen kívül hagyja az egész könyvtárfát, használja a -prune parancsot, nem pedig minden fájlt a fában. Például, ha kihagyja a könyvtár src / emacs és az összes fájlt és könyvtárat, és kinyomtatja a talált fájlok nevét, tegyen valami ilyesmit: find. -path './src/emacs' -prune -o -print |
-perm [mód] | A fájl engedélyezési bitjei pontosan [mód] (oktális vagy szimbolikusak). A szimbolikus módok az 0-as módot használják kiindulási pontként. |
-perm módban | A fájl összes engedélyezési bitje [mód] van beállítva. |
-perm + mód | Bármely engedélyezési bit [mód] van beállítva a fájlhoz. |
-regex [minta] | A fájlnév megfelel a szabályos kifejezésmintának. Ez egyezés az egész úton, nem pedig keresés. Például a ./fubar3 nevű fájlhoz való illesztéshez használhatja a szabályos kifejezést *. vagy . * b. * 3 , de nem b. * r3 . |
-size n [bckw] | A fájl n darab egységet használ. Az egységek alapértelmezésben 512 byte-os blokkok vagy ha b követi n , bájt, ha c követi n , kilobájt, ha k követi n , vagy 2 bájtos szavakat, ha w követi. A méret nem számít közvetett blokkokat, de a kevés formátumú fájlok blokkolását nem számolják el. |
-igaz | Mindig igaz. |
c | A fájl típusa c : |
b | Blokk (pufferelt) speciális |
c | Karakter (nem pufferelt) különleges |
d | Könyvtár |
p | Nevezett cső (FIFO) |
f | Rendszeres fájl |
l | Szimbolikus kapcsolat |
s | Foglalat |
D | ajtó (Solaris) |
-vagy n | A fájl numerikus felhasználói azonosítója n . |
-használta n | A fájlt legutóbb n nappal a statisztikájának legutóbbi módosítása után lehet elérni. |
-használó egyént | A fájl tulajdonosa a felhasználó uname (numerikus felhasználói azonosító engedélyezett). |
-xtype c | Ugyanaz, mint a- típusú, hacsak a fájl nem szimbolikus link. Szimbolikus hivatkozások esetén: ha a -follow nem adódott , akkor igaz, ha a fájl egy c típusú fájlhoz kapcsolódik; ha - a követés adódik, akkor igaz, ha c l. Más szavakkal, szimbolikus linkek esetén, A -xtype ellenőrzi annak a fájlnak a típusát, amelyet a típus nem ellenőriz. |
Hozzászólások
-exec parancs ;
Parancs végrehajtása; igaz, ha a 0 állapot visszakerül. Az összes következő argumentumot a parancsnak kell argumentálnia, amíg egy argumentumot nem tartalmaz: ";" találkozik. A {{} karakterláncot az aktuális fájlnév váltja fel, amelyet mindenhol a parancs argumentumaiban jelenítenek meg, nem csak az érvekben, ahol egyedül van, mint a találatok egyes verzióiban. Mindkét konstrukciót meg kell szüntetni ('\') vagy idézőjelekkel, hogy megóvja őket a héj kiterjesztésétől. A parancs a kezdő könyvtárban fut.
-fls fájl
Igaz; mint a -ls, de írni a fájlt, mint a -fprint.
-fprint fájl
Igaz; nyomtassa ki a teljes fájlnevet a fájl fájlba . Ha a fájl nem létezik, amikor a keresés meg van futtatva, létrejön; ha létezik, akkor csonka. A `` / dev / stdout '' és `` / dev / stderr '' fájlneveket speciálisan kezelik; ezek a szabványos kimenetre és a standard hiba kimenetre vonatkoznak.
-fprint0 fájl
Igaz; mint a -print0, de a fájllal, mint a -fprint.
-fprintf fájlformátum
Igaz; mint a -printf, de a fájlhoz írjuk a -fprint-et.
-ok parancs ;
Mint -exec, de először kérdezze meg a felhasználót (a standard bemeneten); ha a válasz nem kezdődik "y" vagy "Y" -al, akkor ne futtassa a parancsot, és adja vissza a false értéket.
-nyomtatás
Igaz; nyomtassa ki a teljes fájlnevet a szabvány kimeneten, majd kövesse az új sor.
-print0
Igaz; nyomtassa ki a teljes fájlnevet a szabványos kimeneten, majd egy null karaktert. Ez lehetővé teszi az új sorokat tartalmazó fájlneveket, hogy a találatok feldolgozását végző programok megfelelően értelmezzék azokat.
-printf formátumban
Igaz; nyomtatási formátum a szabványos kimeneten, a `\ 'escape és a`%' direktívák értelmezése. A mezők szélessége és pontossága megadható a `printf 'C függvénynek megfelelően. A -print-vel ellentétben a -printf nem ad új sort a string végére. Az elkerülések és az irányelvek a következők:
\ a
Vészcsengő.
\ b
Backspace.
\ c
Állítsa le azonnal a nyomtatást ebből a formátumból és öblítse ki a kimenetet.
\ f
Form feed.
\ n
Új sor.
\ r
Kocsi vissza.
\ t
Vízszintes fül.
\ v
Függőleges lap.
\\
Szó szerinti visszafordulás (`\ ').
\ NNN
Az a karakter, amelynek ASCII kódja NNN (oktális).
A `\ 'karaktert, amelyet bármelyik karakter követ, rendes karakterként kezelik, így mindkettő nyomtatódik.
%%
Szóbeli százaléka.
% a
A fájl utolsó hozzáférési ideje a C `ctime 'függvény által visszaadott formátumban.
% A k
A fájl legutóbbi hozzáférési ideje a k által megadott formában, ami vagy a "@" vagy a C `strftime" függvényre vonatkozó irányelv. A k lehetséges értékeit alább soroljuk fel; egyes esetekben előfordulhat, hogy nem minden rendszerben rendelkezésre állnak, mivel a rendszerek közötti "strftime" különbségek miatt.
@
másodperc óta 1970. január 1., 00:00 GMT.
Időmezők:
H
óra (00..23)
én
óra (01..12)
k
óra (0..23)
l
óra (1..12)
M
perc (00..59)
p
locale AM vagy PM
r
idő, 12 óra (hh: mm: ss [AP] M)
S
második (00..61)
T
idő, 24 óra (hh: mm: ss)
x
locale időbeli ábrázolása (H: M: S)
Z
időzónát (pl. EDT), vagy semmit, ha nincs meghatározható időzóna
Dátummezők:
egy
locale rövidített hétköznapja (Sun..Sat)
A
locale teljes naptári neve, változó hossza (vasárnap ... szombat)
b
locale rövidített neve (Jan..Dec)
B
locale teljes havi neve, változó hossza (január ... december)
c
locale dátum és idő (szo. nov. 04 12:02:33 EST 1989)
d
nap a hónapban (01..31)
D
dátum (mm / dd / év)
h
ugyanaz, mint a b
j
nap (001..366)
m
hó (01..12)
U
hetes évszám vasárnap a hét első napján (00..53)
w
a hét napja (0..6)
W
heti évszám hétfővel a hét első napján (00..53)
x
locale dátumának ábrázolása (mm / dd / yy)
y
az év utolsó két számjegye (00..99)
Y
év (1970 ...)
b%
A fájl mérete 512 byte-os blokkokban (felfelé kerekítve).
% c
A fájl utolsó állapotváltozási ideje a C `ctime 'függvény által visszaadott formátumban.
% C k
A fájl utolsó állapotváltozási ideje a k által megadott formában, ami megegyezik a% A értékével.
% d
A fájl mélysége a könyvtárfában; 0 azt jelenti, hogy a fájl parancssori argumentum.
% f
A fájl neve bármelyik vezető könyvtárral eltávolítva (csak az utolsó elem).
% F
A fájlrendszer típusa, amelyen a fájl be van kapcsolva; ez az érték használható -fstype-hez.
% g
A fájl csoportjának neve vagy numerikus csoport azonosítója, ha a csoportnak nincs neve.
% G
A fájl numerikus csoportazonosítója.
% h
A fájlnevek vezető könyvtárai (az összes, csak az utolsó elem).
% H
Parancssor argumentum, amelyen a fájl megtalálható.
%én
A fájl inode száma (decimális).
% k
A fájlméret 1K blokkban (felfelé kerekítve).
% l
A szimbolikus link objektuma (üres karakterlánc, ha a fájl nem szimbolikus link).
% m
A fájl engedélyezési bitjei (oktálisan).
% N
A fájlokhoz való kemény hivatkozások száma.
% p
A fájl neve.
% P
A fájl neve annak a parancssori argumentumnak a nevével, amelyen megtalálta.
% s
A fájl mérete bájtban.
% t
A fájl utolsó módosítási ideje a C `ctime 'függvény által visszaadott formátumban.
% T k
A fájl utolsó módosítási ideje a k által megadott formában, ami ugyanaz, mint a% A esetében.
% u
A fájl felhasználói neve vagy numerikus felhasználói azonosítója, ha a felhasználónak nincs neve.
% U
A fájl számszerű felhasználói azonosítója.
A "%" karakter, amelyet bármely más karakter követ, elvetik (de a másik karakter nyomtatódik).
-aszalt szilva
Ha -depth nem adódik, igaz; ne engedje le az aktuális könyvtárat.
Ha a -depth, hamis; hatástalan.
-ls
Igaz; az aktuális fájl az "ls -dils" formátumban jelenik meg a szabványos kimeneten. A blokkszámlálás 1K blokk, kivéve, ha a POSIXLY_CORRECT környezeti változó be van állítva, ebben az esetben 512 bájtos blokkok használatosak.
Az üzemeltetők
A csökkenő sorrend sorrendjében felsorolva:
( expr )
Erővel elsőbbséget.
! expr
Igaz, ha az expr hamis.
-nem expr
Ugyanaz, mint a ! expr .
expr1 expr2
És (hallani); Az expr2 értéket nem értékeljük, ha az expr1 hamis.
expr1 -a expr2
Ugyanaz, mint az expr1 expr2 .
expr1 és expr2
Ugyanaz, mint az expr1 expr2 .
expr1- o expr2
Vagy; Az expr2 értékét nem értékeljük ki, ha az expr1 igaz.
expr1 vagy expr2
Ugyanaz, mint az expr1- o expr2 .
expr1 , expr2
Lista; mind az expr1, mind az expr2 értékeket mindig értékeljük. Az expr1 értékét elvetjük; a lista értéke az expr2 értéke.
Példák
find / home -használó joeKeressen minden fájlt a felhasználó joe tulajdonában lévő könyvtárban / házban.
find / usr -name * statKeressen minden fájlt a / usr könyvtár alatt a ".stat" -ban.
találja a / var / spool -mtime +60-atKeressen minden fájlt a / var / spool könyvtár alatt, amelyet több mint 60 napja módosított.
find / tmp -name core -type f -print | xargs / bin / rm -fKeresse meg a / tmp könyvtárban elnevezett fájlokat, és törölje őket. Ne feledje, hogy ez helytelenül működik, ha vannak olyan új fájlnevek, egysoros vagy kettős idézőjelek vagy szóközöket tartalmazó fájlnevek.
find / tmp -name core -type f -print0 | xargs -0 / bin / rm -fKeresse meg a / tmp könyvtárban található vagy az alatt található fájlokat, és törölje őket, feldolgozza a fájlneveket oly módon, hogy az egyes vagy kettős idézőjeleket, szóközöket vagy új sorokat tartalmazó fájl- vagy könyvtárneveket megfelelően kezeljék. A -name teszt a típusú teszt előtt jön, hogy elkerülje a stat (2) minden állományban történő hívását.
megtalálja . -type f -exec fájl '{}' \;Fájlokat futtat minden aktuális könyvtárban vagy alatt. Vegyük észre, hogy a zárójelek egyenkénti pontozási jelekkel vannak ellátva, hogy megvédjék őket az értelmezéstől a shell parancs írásjeleként. A pontosvesszőt ugyanúgy védik a visszafordulás használata, bár ";" ebben az esetben is lehetett volna használni.
/ \ (-méret + 100M -fprintf /root/big.txt '% -10s% \ "% d% p \ n ')A fájlrendszert csak egyszer nyithatja meg, felsorolva a setuid fájlokat és könyvtárakat a /root/suid.txt fájlba és a nagy fájlokat a /root/big.txt fájlba .
találja meg a $ HOME -mtime 0 értéketKeressen olyan fájlokat a saját könyvtárában, amelyek az elmúlt 24 órában módosultak. Ez a parancs azért működik, mert az egyes fájlok legutóbbi módosítása óta eltelt idő 24 órával van elosztva, és a fennmaradó részeket elvetik. Ez azt jelenti, hogy megfeleljen a -mtime
0 , a fájlnak módosítania kell a múltban, ami kevesebb, mint 24 órája.
megtalálja . -perm 664Olyan fájlokat keres, amelyek olvasó és író engedélyt kaptak tulajdonosuk és csoportjuk számára, de amelyeket más felhasználók olvashatnak, de nem írnak. Azok a fájlok, amelyek megfelelnek ezeknek a kritériumoknak, de más jogosultsági biteket tartalmaznak (például ha valaki végrehajthatja a fájlt), nem illeszkednek egymáshoz.
megtalálja . -perm -664Olyan fájlokat kereshet, amelyek olvasó és író engedélyt kapnak tulajdonosa és csoportja számára, és amelyeket más felhasználók is olvashatnak, tekintet nélkül az extra engedélyezési bitek (például a végrehajtható bit) jelenlétére. Ez megegyezik például a 0777-es módú fájlokkal.
megtalálja . -perm / 222Keressen olyan fájlokat, amelyeket valaki (tulajdonosa, csoportja vagy bárkinek) írhat.
megtalálja . -perm / 220 talál. -perm / u + w, g + w talál. -perm / u = w, g = wMindhárom parancs ugyanazt teszi, de az első a fájl mód oktális ábrázolását használja, a másik kettő a szimbolikus formát használja. Ezek a parancsok olyan fájlokat keresnek, amelyeket tulajdonosuk vagy csoportjuk írhat. A fájlok nem kell mind a tulajdonos, mind a csoport számára írhatóak; vagy fog tenni.
megtalálja . -perm -220 talál. -perm -g + w, u + wMindkét parancs ugyanazt teszi; olyan fájlok keresésére, amelyeket tulajdonosa és csoportja írhat.
megtalálja . -perm -444 -perm / 222! -perm / 111 talál. -perm -a + r -perm / a + w! -perm / a + xEz a két parancs mindkettő számára olvasandó fájlokat (-perc -444 vagy -perm -a + r) tartalmaz, legalább írási bit-készleten (-perm / 222 vagy -perm / a + w), de nem végrehajtható bárki számára (! -perm / 111 és! -perm / a + x)
Fontos: Az ember paranccsal ( % man ) tekintse meg, hogyan használják a parancsot az adott számítógépen.