Mei it Linux en Unix kommando: fyn

It kommando Linux en Unix fynt in sykopdracht foar triemmen yn in directoryhierarchy.

Syntaksje foar kommando fûn:

sykje [paad ...] [ekspresje]

Beskriuwing

Dizze hantlieding podearret de GNU-ferzje fan fûn . It befetsje befynt de sykbeam te finen op elke opjûne triemnamme troch it beoardieljen fan de opjûne ekspresje fan lofts nei rjochts, neffens de regels fan prioriteit (sjoch ûnderdiel fan Betellers hjirûnder), oant it útkomst bekend is; yn oare wurden, de lofterhân is miskien foar en operaasjes, wier foar of , op hokker punt de beweging fynt nei de folgjende triemnamme.

It earste argumint dat begjint mei:

wurdt nommen om it begjin fan 'e ekspresje te wurden; elke arguminten foardat it paad binne om te sykjen, en alle arguminten nei it binne de rest fan 'e útdrukking. As gjin paden wurde jûn, wurdt it hjoeddeiske triem brûkt. As der gjin ekspresje jûn wurdt, wurdt de ekspresje -print brûkt.

It kommando fine fynt mei status 0 as alle triemmen mei súkses ferwurke wurde, grutter as 0 as fouten foarkomme.

Expressions

De ekspresje is opsjoneel fan opsjes (dy't elke operaasje effekt hawwe as de ferwurking fan in spesifike triem, en altyd werhelje), tests (dy't in wier of falske wearde weromhelje), en aksjes (dy't side-effekten hawwe en in wier of false value), allegear skiede troch operators. De ekspresje - en wurdt oannommen wêr't de operateur weg is. As de ekspresje gjin hannelingen befettet as -prún , dan wurdt -print op alle triemmen dien wêrfoar't de ekspresje wier is.

Opsjes

Alle opsjes altyd weromgean. Se sille altyd effekt wurde, mar net allinich ferwurke as har plak yn 'e útdrukking berikt wurdt. Dêrom, foar dúdlikens, it is it bêste om se te begjinnen by it begjin fan 'e útdrukking.

-daystart Meitsje tiden (foar -amin, -atime, -mini, -tiime, -mini, -mime ) fan it begjin fan hjoed ôf fanôf 24 oeren lyn.
-djipte Proses de ynhâld fan elke map foar it directory sels.
-folgje Dereferinsjesymboalyske keppelings. Implies -noleaf .
-helje of - helje Druk in gearfetting fan de kommando-lokaasje brûke fan sykjen en út.
-maxdepth [nûmer] Opstean op it measte oantal nivo's (in net-negative integer) fan mappen ûnder de arguminten fan kommando-linen. De ekspresje -maksdepth 0 betsjut allinich de toetsen en aksjes oan de arguminten fan kommando-linen.
-mindep [number] Brûk gjin toetsen of aksjes op nivo's minder as it getal (in net-negative integer). De ekspresje -nûmer 1 betsjuttet alle triemmen útsein as útskeakelje fan de kommandorigens arguminten.
-mount Hjir kinne jo gjin mappen op oare triemsysteem stean. In alternatyf namme foar -xdev , foar kompatibiliteit mei guon oare ferzjes fan fyn .
-noleaf Net optimisearje troch te beantwurdzjen dat mappen befetsje 2 minder subdirectoryen as har hurde keppeling. *
-ferzje of - ferzje Printsje it fûn ferzjenûmer en út.
-xdev Hjir kinne jo gjin mappen op oare triemsysteem stean.

* Dizze opsje is nedich by it sykjen fan triemsysteem dy't net folgje fan 'e konfiguraasjesintrum foar Unix-keppeling, lykas CD-ROM- of MS-DOS-triemmenystems of AFS-volumintepunten. Elke map op in normaal Unix-bestânsysteem hat op syn minst 2 hurde keppelings: syn namme en syn . (perioade) yngong. Dêrneist hawwe har subdirectories (as elk) elke e-post yn ferbân mei dizze map.

Wannear't sykje is it ûndersyk nei in triemtafel, nei't der twa minder subdirectories dien hat as de keppeling fan de triemtafel, wit it dat de oare rûtes yn de map net-triemtafels binne ( blêdde triemmen yn de triembeam). As allinich de nammen fan triemmen ûndersocht binne, dan is it net nedich om se te stean; dit jout in signifikante groei fan sykgeschneld.

Tests

Numerike arguminten kinne oanjûn wurde as:

+ n Foar grutter as n.
-n Foar minder as n.
n Foar krekt n.
-amin n Triem is lêste ôfreizige n minuten lyn.
-anewer [file] Triem koe net koartlyn tagong wurde as triem is wizige. -Anwizer is ynfloed fan -follow allinne as -follow komt foar -oanwizer op 'e kommandorigel.
-atime n Triem is lêste tagong n * 24 oeren lyn.
-cmin n De status fan triem is lêste feroare n minuten lyn.
-cnewer [file] De status fan triem is lêste feroare doe't de triem wizige is.
- cnewer wurdt beynfloede troch -follow allinich -follow komt foar -cnewer op de kommandorigel.
-ktime n Triem's ​​status is lêste feroare n * 24 oeren lyn.
-leech Triem is lege en is in reguliere triem of in triemtafel.
-falsk Altyd mis.
-fstype [type] Triem is op in triemsysteem fan oantsjutte type. De jildige triemsysteemtypen ferskille tusken ferskillende ferzjes fan Unix; In ûnfolsleine list fan triemsysteemtypen dy't aksepteare binne op guon ferzjes fan Unix of oare is: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Jo kinne -printf brûke mei de% F-rjochtline om de typen fan jo triemsysteem te sjen.
-gid n Triem's ​​numerike groepsnamme is n .
-group [gname] Triem heart by groep gname (nûmerike groepsidentiteit tastien).
-ilname [patroan] Lykas -lamme, mar it match is saaklikens.
-Name [pattern] Lykas namme , mar it match is gefaarlik. Bygelyks de patroanen fo * en F ?? passe de triemnammen Foo , FOO , foo , fOo , ensfh.
-inum n Triem hat inod nûmer n .
-ipath [patroan] Lykas paad , mar it match is saaklikens.
-iregex [patroan] Lykas -regex, mar it match is saaklikens.
-links n Triem hat n links.
-lname [patroan] Triem is in symboalyske keppeling dy't syn ynhâld it shellmuster oerienkomt. De metacharakters behannelje net / of . spesjaal.
-mmin n De gegevens fan 'e bestannen binne lêste minuten feroare.
-mime n Triemmen fan triem waarden lêst wizige n * 24 oeren lyn.
-namme [patroan] Basis fan triemnamme (it paad mei de liedende triemmen fuorthelle) komt oerien mei shell pattern. De metacharacters ( * , ? , En [] ) binne net oerien . by it begjin fan 'e basisnammen. Om in map te skriuwen en de bestannen ûnder it gebrûk meitsje, brûke jo - prune ; Sjoch in foarbyld yn 'e beskriuwing fan -paden .
-newer [file] Triem is wizige koartlyn as triem . De ekspresje -newer wurdt beynfloede troch -follow allinich -follow komt foar -newer op de kommandorigel.
-nouser Gjin brûker komt oerien mei de numerike brûkersnamme fan triem.
-nogroup Gjin groep befettet de nûmike groep ID fan triem.
-poad [patroan] Triemnamme befettet shell pattern pattern . De metacharakters behannelje net / of . spesjaal; sa, bygelyks, fine. -path './sr*sc sil in item ynfiere foar in map mei de namme ./src/misc (as ien bestiet). Om in hiele triembeam te besjen, brûke jo -prúnje net allinich kontroleare yn 'e beam. Om bygelyks it directory directory / emacs en alle triemmen en mappen ûnder it skip te skúgjen, en de nammen fan 'e oare triemmen drukke, drukke dan sa: sykje. -path './src/emacs' -prune -o -print
-perm [modus] De tastimming fan triemen fan triemen binne krekt [modus] (oktal of symbolyk). Symbole-modus brûke modus 0 as puntsje fan fuortgong.
-perm -mode Alle fan 'e tastimming bits [modus] binne ynsteld foar it bestân.
-perm + modus Elk fan 'e tastimming bits [modus] binne ynsteld foar it bestân.
-regex [patroan] Triemnamme befettet reguliere ekspresje pattern . Dit is in wedstriid oer it hiele paad, net in sykopdracht. As jo ​​bygelyks in triem oantsjutte mei ./fubar3, kinne jo de reguliere ekspresje brûke . * Bar. of . * b. * 3 , mar net b. * r3 .
-size n [bckw] Triem brûkt n unite fan romte. De ienheden binne standert 512-byteblokken of standert as b n folget, bytes as c folgt n , kilobytes as k folget n , of 2-byte wurden as jo folge n . De grutte makket gjin yndirekte blokken, mar it bliuwt blokken yn sparre triemmen dy't net werjûn wurde.
-wier Altyd wier.
-type c Triem is fan type c :
b Block (buffered) spesjale
c Charakter (ûnbuffere) spesjale
d Directory
p Namme fan pipes (FIFO)
f Regular file
l Symbolische link
s Socket
D door (Solaris)
-uid n Triem's ​​numerike brûkersnamme is n .
-nûmer n Triem is lêste tagong ta tagong ta har status as lêste feroare.
-user uname Triem is eigendom fan brûker uname (nûmerike brûkerside tastien).
-type type c Selden as -type as it bestân is in symboalyske keppeling. Foar symboalyske keppelingen: as -follow is net jûn, wier as de triem in keppeling is foar in bestân fan type c ; as -follow is jûn, wier as c is l. Mei oare wurden, foar symboalyske keppels,
-type kontrolet it type fan it bestân dat -type net kontrolearret.

Actions

-exec kommando ;

Kommando útfiere; Wier as 0 status weromjûn is. Alle folgjende arguminten binne te finen om arguminten te jaan oan it kommando oant in argument besteande út ';' wurdt beynfloede. De snaar '{}' is ferfongen troch de hjoeddeiske triemnamme dy't oeral ferwurke wurdt dat it komt yn 'e arguminten nei it kommando, net allinich yn arguminten wêr't it allinnich is, lykas yn guon ferzjes fan it find . Beide fan dizze konstruksjes moatte miskien wurde ûntkomme (mei in `\ ') of sjoen om se te beskermjen fan útwreiding troch de shell. It kommando wurdt útfierd yn it starte-triemtafel.

-fls bestannen

Wier; lykas -ls mar skriuw om te triemen as -fruk.

-fiere triem

Wier; druk de folsleine triemnamme yn triemtriem . As bestân net bestiet as it finen falt, wurdt it makke; as it bestiet, wurdt it ôfkarre. De triemnammen `` / dev / stdout '' en `` / dev / stderr '' wurde spesjaal behannele; Hja ferwize nei de standert output en standert flaterútfier respektivelik.

-fprint0- bestân

Wier; lykas -print0 mar skriuw nei triem as -fprint.

-fprintf triemformat

Wier; lykas -printf mar skriuwe om te bestellen as -fprint.

-ok kommando ;

Lykas -exec mar freegje de brûker earst (op de standertynfier); as de antwurden net begjint mei `y 'of' Y ', rin it kommando net út en falje werom.

-ôfdrukke

Wier; print de folsleine triemnamme op de standertútfier, folge troch in nije line.

-print0

Wier; druk de folsleine triemnamme op 'e standertútfier, folge troch in nul-teken. Dit soarget foar triemnammen dy't nije linnen befetsje om korrekt ynterpretearre te wurden troch programma's dy 't de fûnútput ferwurket.

-printf- formaat

Wier; printfoarm op 'e standertútfier, ynterpretaasje' \ 'ûntbrekt en'% '-beheardingen. Felderbreedte en prestaasjes kinne oanjûn wurde as by de `printf 'C-funksje. Oars as -print, -printf net taheakje oan in nije line oan 'e ein fan' e snaar. De ûntginnings en rjochtlinen binne:

\in

Alaarm klok.

\ b

Eftergrûn.

\ c

Stypje it druk fan dit formaat fuortendaliks en spuit de útfier.

\ f

Formfeil.

\ n

Nije rigel.

\ r

Carriage return.

\ t

Horizontale ljepper.

\ v

Fertikaal ljepper.

\\

In literêre backslash (`\ ').

\ NNN

It karakter dat syn ASCII-koade is NNN (oktal).

In `\ 'karakter folge troch in oar karakter wurdt behannele as in gewoane karakter, dus beide wurde gedrukt.

%%

In literale persint teken.

%in

De lêste tagong befetsje yn it formaat weromjûn troch de funksje C `ctime.

% A k

De lêste tagong befetsje yn it formaat dat oantsjutte is by k , dat is of "@" of in direkteur foar de funksje C `strftime. De mooglike wearden foar k binne hjirûnder neamd; Guon fan harren kinne net op alle systemen beskikber wêze, troch ferskillen yn 'strftime' tusken systemen.

@

sekonden sûnt 1 jannewaris 1970, 00:00 GMT.

Tiidfjilden:

H

oere (00..23)

ik

oere (01..12)

k

oere (0..23)

l

oere (1..12)

M

minút (00..59)

p

lokale's AM of PM

r

tiid, 12-oere (hh: mm: ss [AP] M)

S

twadde (00..61)

T

tiid, 24 oere (hh: mm: ss)

X

lokale tiidfertsjintwurdiging (H: M: S)

Z

tiidstiid (bgl. EDT), of neat as gjin tiidssône is fêststeld

Datumfjilden:

in

Locale's ôfkoarte wyldernamme (Sun..Sat)

IN

Locale's folsleine namme fan de wike, variable lingte (snein..saturday)

b

Locale's ôfkoarte moannenamme (Jan..Dec)

B

Locale's folsleine moannenamme, variable lingte (jannewaris..de desimber)

c

Locale's date en tiid (Sat Nov 04 12:02:33 EST 1989)

d

dei fan moanne (01..31)

D

Datum (mm / dd / yy)

h

lykas b

j

dei fan it jier (001..366)

m

moanne (01..12)

U

wike nûmer fan jier mei snein as earste dei fan 'e wike (00..53)

w

dei fan 'e wike (0..6)

W

wike nûmer fan jier mei moandei as earste dei fan 'e wike (00..53)

x

Locale 's date representaasje (mm / dd / yy)

y

de lêste twa sifers fan it jier (00..99)

Y

jier (1970 ...)

% b

Triemgrutte yn 512 byte blokken (rûnop).

% c

Triem's ​​lêste status wizigje tiid yn it formaat weromjûn troch de funksje C `ctime.

% C k

Triem's ​​lêste tiidstatus feroarje yn it formaat dat oanjûn is k , dat is itselde as foar% A.

% d

Triemtriem yn 'e triembeam; 0 betsjuttet dat it bestân in kommandorigensargumint is.

% f

Triemnamme mei alle liedende triemmen fuorthelle (allinich it lêste elemint).

% F

Typ fan it bestânsysteem it bestân is op; dizze wearde kin brûkt wurde foar -fstype.

% g

Triemgroupnamme, of nûmerike groepsnamme as de groep gjin namme hat.

% G

Triem's ​​numerike groepsnamme.

% h

Leading directories of file's name (all but the last element).

% H

Kommando-line argumint wêrûnder it bestân fûn is.

%ik

Triem yn in nûmer (yn desimaal nûmer).

% k

Triemgrutte yn 1K-blokken (oproep).

% l

Objekt fan symboalyske keppeling (lege string as triem is gjin symboalyske keppeling).

% m

Triembehearder bits (yn oktal).

% n

Tal hurde keppels nei triem.

% p

Triemnamme.

% P

Triemnamme mei de namme fan it kommando-argyf wêrnei't it fuorthelle fûn wurde.

% s

Triemgrutte yn bytes.

% t

Triem's ​​lêste modifikaasje tiid yn it formaat weromjûn troch de funksje C `ctime.

% T k

De lêste feroaringstriem fan 'e triem yn it formaat dat oanjûn is k , dat is itselde as foar% A.

% u

Of brûkersnamme fan triem, of numerike brûkersnamme as de brûker gjin namme hat.

% U

Triem's ​​numerike brûkersnamme.

In `% 'karakter folge troch in oar karakter wurdt fuortsmiten (mar it oare karakter is bedreaun).

-prune

As -diele wurdt net jûn, wier; Jou de aktive triem net ôf.
As -diele wurdt jûn, falsk; gjin effekt.

-ls

Wier; list aktuele triem yn 'ls -dils' format op standert output. De blokstikken binne fan 1K-blokken, útsein as de omjouwingsfariabele POSIXLY_CORRECT ynsteld is, wêrfan 512-byte blokken brûkt wurde.

Operators

Lisearre yn opdracht fan ôfnimmende prioriteit:

( expr )

Forcefoarsjenning.

! ekspr

True as expr is falsk.

-not ekspr

Itselde as ! ekspr .

expr1 expr2

En (implysjoneel); expr2 wurdt net evaluearre as expr1 is falsk.

expr1 -a expr2

Same as expr1 expr2 .

expr1 -and expr2

Same as expr1 expr2 .

expr1 -o expr2

Of; expr2 wurdt net evaluearre as expr1 is wier.

expr1 -or expr2

Same as expr1 -o expr2 .

expr1 , expr2

List; both expr1 en expr2 wurde altyd evaluearre. De wearde fan expr1 wurdt fuortsmiten; de wearde fan 'e list is de wearde fan expr2 .

Foarbylden

find / home -user joe

Sykje elke triem ûnder it directory / thús eigendom fan jo brûker joe.

Sykje / usr -namme * stat

Sykje alle triemmen ûnder it map / usr einigjen yn ".stat".

find / var / spool -time +60

Sykje alle triemmen ûnder it directory / var / spool dat wizige is mear as 60 dagen lyn.

find / tmp -name core -type f -print | xargs / bin / rm -f

Sykje triemmen neamd core yn of ûnder it directory / tmp en wiskje se. Tink derom dat dit falsk wurket as der gjin filenames binne mei nije linen, ien of dûbele quotes, of spaces.

find / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

Sykje triemmen dy 't core neamd binne of ûnder de directory / tmp en wiskje se, triemmen ferwurkjen sadanich dat triem of triemnammen dy't single- of dûbele sifers befetsje, romten of nije linen binne goed behannele. It testamint -namme komt foar it type -typ- test om te foarkommen dat stat (2) op elke triem neamd wurdt.

fyn. -type f -exec triem '{}' \;

Runs `file 'op elke triem yn of ûnder it aktive triemtafel. Tink derom dat de pylken yn ien inkelde quote markearre wurde om se te beskermjen fan 'e ynterpretaasje as beskriuwing fan skelpskrift. It semykolon is lykwols beskerme beskerme troch it gebrûk fan in backslash, hoewol '; koe yn dat gefal ek brûkt wurde.

find / \ (-perm -4000 -fprintf /root/suid.txt '% #m% u% p \ n' \), \\ (-size + 100M -fprintf /root/big.txt '% -10s% p \ n '\)

Sykje it bestânsysteem allinich ien kear, lêze setuid triemmen en mappen yn /root/suid.txt en grutte bestannen yn /root/big.txt .

Sykje $ HOME -mime 0

Sykje nei triemmen yn jo thús-triemtafel dy't yn 'e lêste 24 oeren feroare binne. Dit kommando wurket dizze wize omdat de tiid sûnt elke triem ferfange is ferdield troch 24 oere en elke rest wurdt fuortsmiten. Dat betsjut dat dat taheakke wurdt

0 , in bestân sil in feroare hawwe yn it ferline dy't minder dan 24 oeren lyn is.

fyn. -perm 664

Sykje foar triemmen dy't lêst en skriuwrjochten foar har eigen eigner en groep hawwe, mar wat oare brûkers kinne lêze mar net skriuwe. Triemen dy 't dizze kritearia foldogge, mar hawwe oare tagongsrjochten ynsteld (bygelyks as immen de triem útfiere kin) net oerienkomme.

fyn. -perm -664

Sykje nei triemmen dy't de tastimming foar har eigner en groep lêzen en skriuwe lêze en skriuwe, en wat oare brûkers kinne lêze, sûnder hokker oanwêzigens fan eventuele ekstra tastakjes (bygelyks de útfierbere bit). Dit komt oerien mei in bestân dat de modus 0777 hat, bygelyks.

fyn. -perm / 222

Sykje foar triemmen dy't skreaun binne troch ien (har eigener, of har groep, of immen oars).

fyn. -perm / 220 fine. -perm / u + w, g + w fine. -perm / u = w, g = w

Alle trije fan dizze kommando's dogge itselde ding, mar de earste brûkt de oktale representaasje fan de triemmodus, en de oare twa brûke de symboalyske foarm. Dizze kommando befettet alle sykjen foar triemmen dy't skreaun binne troch har eigen eigner of har groep. De bestannen moatte net skriuwber wêze troch sawol de eigner en groep oan te passen; dan sil dat dwaan.

fyn. -perm -220 fine. -perm -g + w, u + w

Sawol dizze kommando's dogge itselde ding; sykje nei triemmen dy't skreaun binne troch sawol har eigener en har groep.

fyn. -perm -444 -perm / 222! -perm / 111 fine. -perm -a + r -perm / a + w! -perm / a + x

Dizze twa kommando's sykje syk foar triemmen dy't foar elkenien lêsber binne (-perm -444 of -perm -a + r), hawwe op syn minst op skriuwbit set (-perm / 222 of -perm / a + w), mar net útfierber binne foar elkenien (! -perm / 111 en! -perm / a + x respektivelik)

Wichtich: Brûk de manbehearder ( % man ) om te sjen hoe't in kommando brûkt wurdt op jo bepaalde komputer.