Përdorimi i Linux dhe Unix Command: gjeni

Komanda Linux dhe Unix gjejnë ekzekutimin e një kërkimi për skedarë në një hierarki të direktorisë.

Sintaksa për komandën e gjeni :

gjeni [rrugën ...] [shprehje]

Përshkrim

Kjo faqe manuale dokumenton versionin GNU të gjetjes . Komanda e gjetur kërkon gjetjen e pemës së rrënjosur në secilën emër të dhënë të file duke vlerësuar shprehjen e dhënë nga e majta në të djathtë, sipas rregullave të përparësisë (shih seksionin mbi Operatorët më poshtë), derisa rezultati është i njohur; me fjalë të tjera, anën e majtë është e rreme për dhe operacionet, të vërteta për ose , në cilën pikë gjejnë lëvizje në emrin e skedarit të ardhshëm.

Argumenti i parë që fillon me:

është marrë për të qenë fillimi i shprehjes; çdo argument para se të jenë shtigjet për të kërkuar, dhe çfarëdo argumenti pas saj janë pjesa tjetër e shprehjes. Nëse nuk jepen shtigje, përdoret dosja aktuale. Nëse nuk jepet asnjë shprehje, përdoret shprehja -print .

Komanda e kërkimit del me statusin 0 nëse të gjitha skedarët përpunohen me sukses, më shumë se 0 nëse ndodhin gabime.

shprehjet

Shprehja përbëhet nga opsione (që ndikojnë në operacionin e përgjithshëm sesa në përpunimin e një skedari të caktuar dhe gjithmonë kthehen të vërteta), teste (të cilat kthejnë një vlerë të vërtetë ose të rreme) dhe veprime (të cilat kanë efekte anësore dhe vlera të rreme), të gjitha të ndara nga operatorët. Shprehja - dhe supozohet se ku operatori është lënë jashtë. Nëse shprehja nuk përmban veprime të ndryshme nga -prune , atëherë -print kryhet në të gjitha skedarët për të cilat shprehja është e vërtetë.

Opsione

Të gjitha opsionet gjithmonë kthehen të vërteta. Ata gjithmonë hyjnë në fuqi, në vend që të përpunohen vetëm kur të arrihet vendi i tyre në shprehje. Prandaj, për qartësi, është mirë t'i vendosni ato në fillim të shprehjes.

-daystart Kohët e matjes (për -amin, -atime, -cmin, -ktime, -min, dhe -mtime ) nga fillimi i sotëm dhe jo nga 24 orë më parë.
-thellesi Procesi i përmbajtjes së çdo dosjeje përpara vetë dosjes.
-follow Lidhje simbolike. Përmban -noleaf .
- ndihmë ose - ndihmë Shtypni një përmbledhje të përdorimit të vijës së komandës së gjetjes dhe daljes.
-maxdepth [numri] Zbritja në shumicën e numrave të niveleve (një numër i plotë jo-negativ) i drejtorive nën argumentet e vijës së komandës. Shprehja -maxdepth 0 do të thotë vetëm të zbatojë testet dhe veprimet në argumentet e vijës së komandës.
-mindepth [numër] Mos aplikoni asnjë test ose veprim në nivele më të ulëta se numri (një numër i plotë jo-negativ). Shprehja -indindepth 1 do të thotë proces të gjitha skedarët përveç argumenteve të vijës së komandës.
-mount Mos zbrisni drejtoritë në sistemet e tjera të skedarëve. Një emër alternativ për -xdev , për pajtueshmërinë me disa versione të tjera të gjetjes .
-noleaf Mos optimizoni duke supozuar se drejtoritë përmbajnë 2 nënndrejtesa më pak sesa numri i lidhjeve të tyre të forta. *
-version ose -version Shtypni numrin e versionit të zbulimit dhe dilni.
-xdev Mos zbrisni drejtoritë në sistemet e tjera të skedarëve.

* Ky opsion është i nevojshëm kur kërkoni skedarë sistemesh që nuk ndjekin konventën e lidhjes së dosjeve Unix, të tilla si sistemet e skedarëve CD-ROM ose MS-DOS ose pikat e montimit të vëllimit AFS. Çdo dosje në një sistem file normal Unix ka të paktën dy lidhje të forta: emri i tij dhe i tij . (periudhë). Përveç kësaj, nënndrejtoritë e tij (nëse ka) secili kanë një .. hyrje të lidhur me atë dosje.

Kur të gjeni është duke shqyrtuar një direktori, pasi ka vendosur dy subdirectories më pak sesa numri i lidhjes së direktivave, ai e di se pjesa tjetër e shënimeve në direktorium janë jo-drejtori (dosjet e gjetheve në pemën e direktorisë). Nëse vetëm emrat e dosjeve duhet të shqyrtohen, nuk ka nevojë të tregohen ato; kjo jep një rritje të konsiderueshme në shpejtësinë e kërkimit.

testet

Argumentet numerike mund të specifikohen si:

+ n Për më shumë se n.
-N Për më pak se n.
n Për saktësisht n.
-amin n Dosja është qasur për herë të fundit n minuta më parë.
-anewer [file] Skeda është qasur së fundmi në kohët e fundit sesa skedari është modifikuar. -sa më shumë është prekur nga -follow vetëm nëse -follow vjen para -nënës në rreshtin e komandës.
-atime n Dosja është qasur për herë të fundit n * 24 orë më parë.
-cmin n Statusi i dokumentit u ndryshua për herë të fundit më parë.
-cnewer [file] Statusi i fajllit u ndryshua së fundmi në kohët e fundit sesa u ndryshua skedari.
- cnewer është prekur nga -follow vetëm nëse -follow vjen para -cnewer në command line.
- data n Statusi i skedës u ndryshua së fundmi n * 24 orë më parë.
-empty Skedari është bosh dhe është ose një skedar i rregullt ose një direktori.
-i rremë Gjithmonë i rremë.
-fstype [tipi] Skeda është në një sistem skedar të tipit të specifikuar. Llojet e kartelave të vlefshme ndryshojnë midis versioneve të ndryshme të Unix; një listë jo e plotë e llojeve të sistemeve të skedarëve të pranuar në ndonjë version të Unix ose në një tjetër është: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Ju mund të përdorni -printf me direktivën% F për të parë llojet e skedarëve tuaj.
-gid n ID grupi i skedarit është n .
-group [gname] Skeda i përket grupit gname (numri numerik i lejuar i grupit).
emri [modeli] Ashtu si -lname, por ndeshja është rast i pandjeshëm.
-iname [model] Ashtu si -name , por ndeshja është rast i pandjeshëm. Për shembull, modelet për * dhe F ?? përputhen me emrat e skedarëve Foo , FOO , foo , fOo , etj.
-inum n Skedari ka numrin inode n .
-ipath [model] Ashtu si path , por ndeshja është rast i pandjeshëm.
-regex [model] Ashtu si -regex, por ndeshja është rast i pandjeshëm.
Lidhjet n Dosja ka lidhje n .
-lname [model] Dosja është një lidhje simbolike përmbajtja e të cilave përputhet me modelin e shell. Metakarakteret nuk trajtojnë ose . posaçërisht.
-mmin n Të dhënat e skedës janë ndryshuar për herë të fundit n minuta më parë.
-mtime n Të dhënat e skedës janë ndryshuar për herë të fundit n * 24 orë më parë.
-name [model] Baza e emrit të skedarit (rruga me drejtoritë kryesore të hequr) përputhet me modelin e shell. Metakaraktorët ( * , ? , Dhe [] ) nuk përputhen me një . në fillim të emrit bazë. Për të injoruar një direktori dhe skedarët nën të, përdorni -prune ; shih një shembull në përshkrimin e -Path .
-newer [file] Skedari është modifikuar kohët e fundit se dosja . Shprehja -newer është prekur nga -follow vetëm nëse -follow vjen para- newer në command line.
-nouser Asnjë përdorues nuk korrespondon me ID-në numerike të përdoruesit të skedarit.
-nogroup Asnjë grup nuk i përgjigjet numrit numerik të grupit.
-path [model] Emri i skedarit përputhet me modelin e shell pattern . Metakarakteret nuk trajtojnë ose . posaçërisht; kështu, për shembull, gjeni. -path './sr*sc do të shtypë një hyrje për një direktori të quajtur ./src/misc (nëse ekziston një). Për të injoruar një pemë të tërë të direktorisë, përdorni -prune në vend që të kontrolloni çdo skedar në pemë. Për shembull, për të kapërcyer direktorinë src / emacs dhe të gjitha skedarët dhe direktoritë nën të, dhe shtypni emrat e skedarëve të tjerë të gjetur, bëni diçka të tillë: gjeni. -path './src/emacs' -prune -o-print
-perm [mode] Bitë e lejes së skedarit janë pikërisht [modalitet] (okral ose simbolik). Mënyrat simbolike përdorin mënyrën 0 si pikë nisjeje.
-perm-mode Të gjitha copëtimet e lejes [mode] janë caktuar për skedarin.
-perm + mode Çdo skedë me leje [mode] është caktuar për skedarin.
-regex [model] Emri i dosjes përputhet me modelin e rregullt të shprehjes. Kjo është një ndeshje në të gjithë rrugën, jo një kërkim. Për shembull, për të përputhur një skedar me emrin ./fubar3, mund të përdorni shprehjen e rregullt . * Bar. ose . * b. * 3 , por jo b. * r3 .
-size n [bckw] Skedari përdor n njësi të hapësirës. Njësitë janë blloqe 512 byte me parazgjedhje ose nëse b ndjek n , bytes nëse c vijon n , kilobitë nëse k ndjek n , ose fjalë 2 byte nëse w ndjek n . Madhësia nuk numëron blloqe indirekte, por bllokon numërimin në skedarët e rrallë që nuk janë alokuar në të vërtetë.
-true Gjithmonë e vërtetë.
-type c Dosja është e tipit c :
b Blloku (buffered) special
c Karakteri (i pafuqizuar) i veçantë
d drejtori
p Tub i quajtur (FIFO)
f Dosje e rregullt
l Lidhje simbolike
s fole
D derë (Solaris)
-uid n ID-ja numerike e përdoruesit të skedarit është n .
-dorur n Dosja është qasur për herë të fundit n ditë pas statusit të saj të ndryshuar së fundmi.
- përdorim uname Skeda është në pronësi të përdoruesit të uname (ID numerik përdorues i lejuar).
-xtype c I njëjti si - tipi nëse skedari nuk është një lidhje simbolike. Për lidhje simbolike: nëse -follow nuk është dhënë, true nëse skedari është një lidhje me një skedar të tipit c ; nëse -follow është dhënë, true nëse c është l. Me fjalë të tjera, për lidhje simbolike,
-xtype kontrollon llojin e skedarit që - tipi nuk kontrollon.

veprimet

-exec komandë ;

Ekzekutoj komandën ; true nëse statusi 0 është kthyer. Të gjitha argumentet e mëposhtme për të gjetur merren të jenë argumente për komandën deri në një argument që përbëhet nga ';'; është hasur. Vargu {{} zëvendësohet me emrin aktual të skedarit që përpunohet kudo që ndodh në argumentet e komandës, jo vetëm në argumentet ku është vetëm, ashtu si në disa versione të gjetjes . Të dyja këto ndërtime mund të kenë nevojë të shpëtojnë (me një '\') ose të citohen për t'i mbrojtur ata nga zgjerimi nga guaska. Komanda ekzekutohet në dosjen fillestare.

-fls file

True; si -ls, por shkruani në skedar si -fprint.

-fprint file

True; printoni emrin e skedarit të plotë në skedar . Nëse skedari nuk ekziston kur gjykim është i drejtuar, ajo krijohet; nëse ekziston, ajo është e prerë. Emrat e skedarëve `` / dev / stdout '' dhe `` / dev / stderr '' trajtohen posaçërisht; ato i referohen prodhimit të standardit dhe prodhimit të gabimit standard, respektivisht.

-fprint0

True; si -print0 por shkruani në skedar si -fprint.

-fprintf format

True; si -printf, por shkruani në skedarë si -fprint.

-ok komandë ;

Ashtu si -exec, por kërkoni përdoruesin e parë (në hyrjen standarde); nëse përgjigja nuk fillon me `y 'ose' Y ', mos e përdorni komandën dhe kthehuni të rreme.

-print

True; printoni emrin e skedarit të plotë në dalje standarde, e ndjekur nga një rresht i ri.

-print0

True; printoni emrin e skedarit të plotë në dalje standarde, pasuar nga një karakter i pavlefshëm. Kjo lejon emrat e skedarëve që përmbajnë rreshta të reja për t'u interpretuar në mënyrë korrekte nga programet që përpunojnë rezultatin e gjetjes .

-printf format

True; formatin e printimit në prodhimin standard, duke interpretuar `\ 'arratisjet dhe direktivat'% '. Gjerësia dhe saktësitë e fushës mund të specifikohen si me funksionin `printf '. Ndryshe nga -print, -printf nuk shton një vijë të re në fund të vargut. Arratisjet dhe direktivat janë:

\ a

Zile alarmi.

\ b

Backspace.

\ c

Stop shtypjen nga ky format menjëherë dhe shuaj prodhimin.

\ f

Ushqimi i formës.

\ n

Newline.

\ r

Kthim ngarkese.

\ t

Tab horizontale.

\ v

Tab vertikale.

\\

Një backslash fjalë për fjalë (`\ ').

\ NNN

Karakteri kodi ASCII i të cilit është NNN (okral).

Karakteri '\' i ndjekur nga çdo karakter tjetër trajtohet si një karakter i zakonshëm, kështu që të dyja shtypen.

%%

Një shenjë e saktë për qind.

% a

Koha e fundit e qasjes së dokumentit në formatin e kthyer nga funksioni C `ctime '.

% A k

Afati i fundit i qasjes së dokumentit në formatin e përcaktuar nga k , i cili është ose '@' ose një direktivë për funksionin C `strftime '. Vlerat e mundshme për k janë renditur më poshtë; disa prej tyre mund të mos jenë të disponueshme në të gjitha sistemet, për shkak të dallimeve në 'strftime' midis sistemeve.

@

sekonda që nga 1 Janari 1970, 00:00 GMT.

Fusha kohore:

H

ore (00..23)

unë

orë (01..12)

k

orë (0..23)

l

orë (1..12)

M

minutë (00..59)

p

AM lokale apo PM

r

koha, 12 orë (hh: mm: ss [AP] M)

S

i dyti (00..61)

T

koha, 24 orë (hh: mm: ss)

X

përfaqësimi i kohës në lokal (H: M: S)

Z

(p.sh., EDT), ose asgjë nëse nuk ka zonë kohore të përcaktueshme

Fushat e datës:

një

emri i shkurtuar i ditëve të javës së lokalit (Sun.Sat)

A

emri i plotë i ditëve të javës në lokal, gjatësia e ndryshueshme (e diela .. e shtunë)

b

Emri i shkurtuar i muajit locale (Jan. Dhjetor)

B

Emri i muajit të plotë të lokalit, gjatësia e ndryshueshme (janar / dhjetor)

c

data dhe ora e lokalit (Sat Nov 04 12:02:33 EST 1989)

d

dita e muajit (01..31)

D

data (mm / dd / yy)

orë

njësoj si b

j

dita e vitit (001..366)

m

muaj (01..12)

U

numri i javës së vitit me të dielën si dita e parë e javës (00..53)

w

dita e javes (0..6)

W

javë numri i vitit me të hënën si dita e parë e javës (00..53)

x

përfaqësimi i datës së vendbanimit (mm / dd / yy)

y

dy shifrat e fundit të vitit (00..99)

Y

vit (1970 ...)

% b

Madhësia e skedës në blloqe prej 512 byte (të rrumbullakosura).

% c

Ndryshimi i statusit të fundit të skedarit në formatin e kthyer nga funksioni C `ctime '.

% C k

Ndryshimi i statusit të fundit të skedarit në formatin e specifikuar nga k , i cili është i njëjtë me atë të% A.

% d

Thellësia e skedarit në pemën e direktorisë; 0 do të thotë skedari është një argument i vijës së komandës.

% f

Emri i skedarit me ndonjë drejtori kryesor të hequr (vetëm elementi i fundit).

% F

Lloji i skedarit të skedarit të skedarit; kjo vlerë mund të përdoret për -fstype.

% G

Emri i grupit të skedarit, ose grupi numerik nëse grupi nuk ka emër.

% G

ID grupi numerik i skedarit.

% h

Drejtoritë drejtuese të emrit të skedarit (të gjithë, por elementi i fundit).

% H

Argumenti i linjës së komandës sipas të cilit është gjetur skeda.

% i

Numri i inode i skedarit (në decimal).

% k

Madhësia e skedës në blloqe 1K (të rrumbullakosura).

% l

Objekti i lidhjes simbolike (vargu i zbrazët nëse skedari nuk është një lidhje simbolike).

% m

Bitë e lejes së skedarit (në oktal).

% n

Numri i lidhjeve të vështira në dosje.

% p

Emri i skedarit.

% P

Emri i skedarit me emrin e argumentit të vijës së komandës nën të cilin u gjet i hequr.

% s

Madhësia e dokumentit në bytes.

% t

Koha e modifikimit të fundit të skedarit në formatin e kthyer nga funksioni C `ctime '.

% T k

Koha e modifikimit të fundit të skedarit në formatin e specifikuar nga k , i cili është i njëjtë me% A.

% u

Emri i përdoruesit të skedarit, ose identifikuesi numerik i përdoruesit nëse përdoruesi nuk ka emër.

% U

ID-ja numerike e përdoruesit të skedarit.

Karakteri "%" i ndjekur nga çdo karakter tjetër fshihet (por karakteri tjetër shtypet).

-prune

Nëse -depth nuk jepet, është e vërtetë; mos zbrisni dosjen aktuale.
Nëse -depth është dhënë, false; nuk ka efekt.

-LS

True; listoni skedarin aktual në formatin 'ls-dils' në prodhimin standard. Bllokimi i bllokut është i blloqeve 1K, përveç nëse është vendosur variabli i mjedisit POSIXLY_CORRECT, në të cilin rast përdoren blloqe 512 byte.

operatorët

Të renditura në mënyrë që të ulet përparësia:

( expr )

Forca përparësi.

! expr

Vërtetë nëse expr është i rremë.

- jo expr

E njejta si ! expr .

expr1 expr2

Dhe (nënkuptuar); expr2 nuk vlerësohet nëse expr1 është false.

expr1- aprpr2

Njësoj si expr1 expr2 .

expr1 dhe expr2

Njësoj si expr1 expr2 .

expr1- o expr2

ose; expr2 nuk vlerësohet nëse expr1 është e vërtetë.

expr1 - ose expr2

Njësoj si expr1- o expr2 .

expr1 , expr2

Listë; të dy expr1 dhe expr2 janë vlerësuar gjithmonë. Vlera e expr1 fshihet; vlera e listës është vlera e expr2 .

shembuj

gjeni / home -use joe

Gjeni çdo skedar nën direktorinë / shtëpinë e zotëruar nga përdoruesi joe.

gjeni / usr -name * stat

Gjeni çdo skedar nën dosjen / usr duke përfunduar në ".stat".

gjeni / var / spool -mtime +60

Gjeni çdo skedar nën direktorinë / var / spool që u ndryshua më shumë se 60 ditë më parë.

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

Gjeni skedarë të emëruar në bazë ose nën dosjen / tmp dhe fshini ato. Vini re se kjo do të funksionojë gabim nëse ka ndonjë emër file që përmban linja të reja, citate të vetme ose të dyfishta ose hapësira.

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

Gjeni skedarët me emër të brendshëm në ose nën dosjen / tmp dhe fshini ato, duke përpunuar skedarët e skedarëve në mënyrë të tillë që skedarët ose emrat e direktorisë që përmbajnë kuotat e vetme ose të dyfishta, hapësirat ose rreshtat e reja janë trajtuar në mënyrë korrekte. Testi i emrit vjen para testit të tipit për të shmangur thirrjen e stat (2) në çdo skedar.

Gjej . -type f-exec file '{}' \;

Shkon `file 'në çdo skedar në ose nën dosjen aktuale. Vini re se formatimin e teksteve janë mbyllur në shenjat e kuotave të vetme për t'i mbrojtur ata nga interpretimi si shenjë e skriptës së shell. Pika e bardhë është e mbrojtur në mënyrë të ngjashme nga përdorimi i një shkrepëse, edhe pse ';' mund të ketë qenë përdorur edhe në atë rast.

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

Lëvizni skedarët e skedarëve vetëm një herë, duke listuar skedarë dhe direktori të konfiguruar/root/suid.txt dhe skedarë të mëdhenj në /root/big.txt .

gjeni $ HOME -mtime 0

Kërkoni skedarët në direktorinë tuaj në shtëpi të cilat janë ndryshuar gjatë njëzet e katër orëve të fundit. Ky komandë funksionon në këtë mënyrë sepse koha që secila skedë është ndryshuar për herë të fundit është e ndarë me 24 orë dhe çdo mbetje fshihet. Kjo do të thotë që të përputhet me kohën

0 , një skedar do të duhet të ketë një modifikim në të kaluarën që është më pak se 24 orë më parë.

Gjej . -perm 664

Kërkoni skedarë që kanë lexuar dhe shkruar leje për pronarin dhe grupin, por cilat përdorues të tjerë mund të lexojnë por jo të shkruajnë. Dosjet që plotësojnë këto kritere, por që kanë të drejta të tjera të lejeve (p.sh. nëse dikush mund të ekzekutojë skedarin) nuk do të përputhet.

Gjej . -perm -664

Kërkoni skedarë që kanë lexuar dhe shkruar leje për pronarin dhe grupin e tyre dhe cilat përdorues të tjerë mund të lexojnë, pa marrë parasysh praninë e ndonjë bit shtesë shtesë (p.sh. bit e ekzekutueshme). Kjo do të përputhet me një skedar që ka modalitetin 0777, për shembull.

Gjej . -perm / 222

Kërkoni skedarë që mund të shkruhen nga dikush (pronari i tyre, grupi i tyre ose kushdo tjetër).

Gjej . -perm / 220 gjetur. -perm / u + w, g + w gjeni. -perm / u = w, g = w

Të tre këto komanda bëjnë të njëjtën gjë, por i pari përdor përfaqësimin oktal të modalitetit të skedarit, ndërsa të dy përdorin formën simbolike. Këto komanda kërkojnë të gjitha dosjet të cilat mund të shkruhen nga pronari i tyre ose nga grupi i tyre. Dosjet nuk duhet të jenë të shkruara nga pronari dhe grupi që duhet të përputhen; ose do të bëjë.

Gjej . -perm -220 gjeni. -perm -g + w, u + w

Të dyja këto komanda bëjnë të njëjtën gjë; kërkoni për skedarë që janë të shkruara nga pronari i tyre dhe grupi i tyre.

Gjej . -perm -444 -perm / 222! -perm / 111 gjetur. -perm -a + r -perm / a + w! -perm / a + x

Këto dy komanda kërkojnë të gjitha skedarët që janë të lexueshëm për të gjithë (-perm -444 ose -perm -a + r), të paktën të shkruajnë bit set (-perm / 222 ose -perm / a + w) por nuk janë të ekzekutueshme për të gjithë (! -perm / 111 dhe! -perm / a + x respektivisht)

E rëndësishme: Përdorni komandën e njeriut ( % man ) për të parë se si përdoret një komandë në kompjuterin tuaj të veçantë.