Skip to main content

Linux- ja Unix-komentojen avulla

Writing 2D Games in C using SDL by Thomas Lively (Kesäkuu 2026)

Writing 2D Games in C using SDL by Thomas Lively (Kesäkuu 2026)
Anonim

Linux- ja Unix-komento löytö suorittaa hakuja tiedostoista hakemistohierarkiassa.

Syntaksi löytö komento:

löytää polku … lauseke

Kuvaus

Tämä manuaalinen sivu dokumentoi GNU - version löytö . Käsky löytö etsii hakemistopuuta juurtuneena jokaiselle annetulle tiedostonimelle arvioimalla annetun lausekkeen vasemmalta oikealle ensisijaisuuden sääntöjen mukaisesti (ks. jäljempänä operaattorit), kunnes lopputulos on tiedossa; Toisin sanoen vasemmanpuoleinen sivu on väärä ja toimintaa, totta tai , jolloin löytö siirtyy seuraavaan tiedostonimeen.

Ensimmäinen argumentti, joka alkaa:

  • -
  • ( tai),
  • !

on otettu lausekkeen alkuun; kaikki argumentit, ennen kuin se on polkuja etsimiseen, ja kaikki argumentit sen jälkeen, kun se on loput lausekkeesta. Jos polkuja ei anneta, käytetään nykyistä hakemistoa. Jos lauseketta ei anneta, ilmaisu -Tulosta käytetään.

löytö komento poistuu tilasta 0, jos kaikki tiedostot käsitellään onnistuneesti, yli 0 jos virheitä ilmenee.

expressions

Ilmaisu koostuu vaihtoehdoista (jotka vaikuttavat kokonaisoperaatioon tietyn tiedoston käsittelyn sijaan ja palaavat aina tosi), testeistä (jotka palauttavat todellisen tai väärän arvon) ja toimista (joilla on sivuvaikutuksia ja palauttavat todellisen tai väärä arvo), jotka kaikki erottavat operaattorit. Ilmaisu -ja oletetaan, jos operaattori jätetään pois. Jos lausekkeessa ei ole muita toimintoja kuin -karsia , sitten -Tulosta suoritetaan kaikille tiedostoille, joiden ilmaus on tosi.

vaihtoehdot

Kaikki vaihtoehdot palaavat aina totta. Ne tulevat aina voimaan, eikä niitä käsitellä vain, kun niiden paikka ilmaisuun on saavutettu. Siksi selkeyden vuoksi on parasta sijoittaa ne ilmauksen alkuun.

-daystart Mitoitusajat ( -amiini, -aika, -cmin, -keto, -mmin, ja -mtime ) tämän päivän alusta eikä 24 tuntia sitten.
-syvyys Jokaisen hakemiston sisältö käsitellään ennen hakemiston itse.
-follow Dereference symboliset linkit. Viittaa option -noleaf .
-auta tai --auta Tulosta yhteenveto komentorivin käytöstä löytö ja poistua.
-maxdepth määrä Laske useimmilla tasolla (ei-negatiivinen kokonaisluku) komentorivin argumenttien alapuolella olevista hakemistoista. Ilmaisu -maxdepth 0 tarkoittaa vain testien ja toimintojen käyttämistä komentorivin argumentteihin.
-mindepth numero Älä käytä testejä tai toimintoja tasolle, joka on pienempi kuin numero (ei-negatiivinen kokonaisluku). Ilmaisu -mindepth 1 tarkoittaa prosessin kaikkia tiedostoja lukuunottamatta komentorivin argumentteja.
-mount Älä laske muiden tiedostojärjestelmien hakemistoja. Vaihtoehtoinen nimi -xdev , yhteensopivuus joidenkin muiden versioiden kanssa löytö .
option -noleaf Älä optimoi olettamalla, että hakemistoissa on 2 vähemmän alihakemistoja kuin niiden kovan linkin määrä. *
-versio tai --versio Tulosta löytö versionumero ja poistuminen.
-xdev Älä laske muiden tiedostojärjestelmien hakemistoja.

* Tätä asetusta tarvitaan etsittäessä tiedostojärjestelmiä, jotka eivät noudata Unix-hakemiston linkkikokonaisuutta, kuten CD-ROM- tai MS-DOS-tiedostojärjestelmät tai AFS-tilavuusliitäntäpisteet. Jokaisella tavallisella Unix-tiedostojärjestelmällä on vähintään kaksi kovaa linkkiä: sen nimi ja sen nimi. (aika). Lisäksi sen alihakemistot (jos sellaisia ​​on) ovat kullakin. merkintä liittyy tähän hakemistoon.

Kun löytö tutkii hakemiston sen jälkeen, kun se on tunnistanut kaksi vähemmän alihakemistoja kuin hakemiston linkin määrä, se tietää, että muut hakemistossa olevat merkinnät ovat ei-hakemistoja ( puun lehti tiedostoja hakemistopuussa). Jos vain tiedostojen nimet on tutkittava, niitä ei tarvitse tilata; tämä lisää huomattavasti hakunopeutta.

testit

Numeeriset argumentit voidaan määrittää seuraavasti:

+ n Enemmän kuin n.
-n Vähemmän kuin n.
n Tarkalleen n.
-amin n Tiedostoa käytettiin viimein n minuuttia sitten.
-anewer tiedosto Tiedostoa käytettiin viimeksi viime aikoina tiedosto muutettiin. - Seuraa vain - jostain - seuraa ennen - komentoriviltä.
-aika n Tiedostoa käytettiin viimein n * 24 tuntia sitten.
-cmin n Tiedoston tila on viimeksi vaihdettu n minuuttia sitten.
-cnewer tiedosto Tiedoston tila on viimeksi muutettu viimeksi, kun tiedostoa muutettiin.- cnewer vaikuttavat -follow vain jos -follow tulee ennen -cnewer komentorivillä.
-määrä n Tiedoston tila on viimeksi vaihdettu n * 24 tuntia sitten.
-tyhjä Tiedosto on tyhjä ja se on joko tavallinen tiedosto tai hakemisto.
-väärä Aina väärä.
-tyyppi tyyppi Tiedosto on tiettyä tyyppiä oleva tiedostojärjestelmä. Kelvolliset tiedostojärjestelmätyypit vaihtelevat eri Unix-versioiden välillä; epätäydellinen luettelo tiedostojärjestelmätyypeistä, jotka hyväksytään jonkin Unix-version versiossa, ovat: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Voit käyttää% F -direktiiviä -printf nähdäksesi tiedostojärjestelmiesi tyypit.
-gid n Tiedoston numeroryhmän tunnus on n .
-ryhmä gname Tiedosto kuuluu ryhmän gname (sallittu numeerinen ryhmä ID).
-ilname kuvio Kuten -nimeä, mutta ottelu ei kaihdo.
-iname kuvio Kuten -nimi , mutta ottelu on karsinainen. Esimerkiksi kuvioita fo * ja F ?? vastaa tiedostonimiä foo , FOO , foo , foo , jne.
-inum n Tiedostossa on inode-numero n .
-pyörä kuvio Kuten -path , mutta ottelu on karsinainen.
-regex kuvio Kuten -regex, mutta ottelu on tapauksettomat.
-links n Tiedosto on n linkkejä.
- nimi kuvio Tiedosto on symbolinen linkki, jonka sisältö vastaa kuorimallia. Metakarakterit eivät käsitellä / tai . erityisesti.
-mmin n Tiedoston tietoja on viimeksi muokattu n minuuttia sitten.
-mtime n Tiedoston tietoja on viimeksi muokattu n * 24 tuntia sitten.
-nimi kuvio Tiedoston nimen pohja (polku, jossa johtavat hakemistot poistetaan) vastaa kuorikuvausta. Metakarakterit (*, ?, ja ) eivät vastaa . perusnimen alussa. Jos haluat ohittaa hakemiston ja sen tiedostoja, käytä -karsia ; katso esimerkki kuvauksesta -path .
-newer tiedosto Tiedostoa muokataan hiljattain kuin tiedosto . Ilmaisu -newer vaikuttavat -follow vain jos -follow tulee ennen -newer komentorivillä.
-nouser Yksikään käyttäjä ei vastaa tiedoston numeerista käyttäjätunnusta.
-nogroup Ryhmä ei vastaa tiedoston numeerista ryhmätunnusta.
-path kuvio Tiedoston nimi vastaa shell -kuvaketta kuvio . Metakarakterit eivät käsitellä / tai . erityisesti; niin esimerkiksi,löytö . -path './sr*sc tulostaa merkinnän nimeltä ./src/misc (jos sellainen on olemassa). Jos haluat jättää koko hakemistopuun, käytä sitä -karsia sen sijaan, että tarkistat kaikki puun tiedostot. Jos esimerkiksi ohitat hakemiston src / emacs ja kaikki sen alla olevat tiedostot ja hakemistot ja tulosta muiden löydettyjen tiedostojen nimet, tee jotain seuraavasta:löytö . -Path './src/emacs' -prune -o -print
-perm tila Tiedoston lupabitit ovat täsmälleen Tila (oktaali tai symbolinen). Symboliset tilat käyttävät tilaa 0 lähtökohtana.
-perm -mode Kaikki luvat bitit Tila asetetaan tiedostolle.
-perm + -tila Jokainen lupa bittiä Tila asetetaan tiedostolle.
-regex kuvio Tiedoston nimi vastaa säännöllistä lauseketta kuvio . Tämä on ottelu koko polun, ei haun. Jos haluat esimerkiksi sovittaa tiedoston nimeltä ./fubar3, voit käyttää säännöllistä lauseketta .*baari. tai . * B. * 3, mutta ei b. * R3.
-size n bckw Tiedostojen käyttö n tilaa. Yksiköt ovat oletusarvoisesti 512 tavun lohkoja tai jos b seuraa n , bytes, jos c seuraa n , kilobytejä, jos k seuraa n , tai 2-tavuinen sana, jos w seuraa n . Koko ei laske epäsuoria lohkoja, mutta se laskee lohkot harvaan tiedostoihin, joita ei ole tosiasiallisesti allokoitu.
-totta Aina totta.
-tyyppi c Tiedosto on tyyppiä C :
b Estä (puskuroitu) erityinen
C Merkki (puskuroimaton) erikoinen
d hakemisto
p Nimetty putki (FIFO)
f Säännöllinen tiedosto
l Symbolinen linkki
s pistorasia
D ovi (Solaris)
-v Tiedoston numeerinen käyttäjätunnus on n .
käytettiin n Tiedostoa käytettiin viimein n päivää sen tilan muuttamisen jälkeen.
- käytä uname Tiedoston omistaja on käyttäjä sinä nimi (sallittu numeerinen käyttäjätunnus).
-xtype c Sama kuin -tyyppi ellei tiedosto ole symbolinen linkki. Symbolisten linkkien osalta: jos -follow ei ole annettu, totta, jos tiedosto on linkki tyypin tiedostolle C ; jos -follow on annettu, totta jos C on l. Toisin sanoen, symbolisten linkkien, -xtype tarkistaa tiedoston tyypin -tyyppi ei tarkista.

Toimet

exec komento ;

Suorittaa komento ; true, jos 0-tila palautetaan. Kaikki seuraavat perustelutlöytö otetaan käskyksi argumentteiksi, kunnes argumentti, joka koostuu ";" on havaittu. Merkki "{}" korvataan nykyisellä tiedostonimellä, jota käsitellään kaikkialla, missä se esiintyy komentojen argumentteissa, ei vain argumentteissa, joissa se on yksin, kuten joissakin versioissalöytö. Molemmat näistä rakenteista saattavat joutua pakenemaan (` ') tai lainattuna suojaamaan niitä laajennuksesta. Komento suoritetaan lähtöhakemistossa.

-fls tiedosto

Totta; kuten -ls mutta kirjoittaa tiedosto kuten -fprint.

-fprint tiedosto

Totta; tulosta koko tiedoston nimi tiedostoon tiedosto . Jos tiedosto ei ole olemassa milloinlöytö suoritetaan, se luodaan; jos se on olemassa, se on katkaistu. Tiedostonimet `` / dev / stdout '' ja `` / dev / stderr '' käsitellään erityisesti; ne viittaavat vakiotulosteeseen ja vakiovirheen lähtöön, vastaavasti.

-fprint0 tiedosto

Totta; kuten -print0 mutta kirjoittaa tiedosto kuten -fprint.

-fprintf tiedosto muoto

Totta; kuten -printf mutta kirjoittaa tiedosto kuten -fprint.

-OK komento ;

Kuten -exec, mutta kysy ensin käyttäjältä (vakiotuloon); jos vastaus ei käynnisty "y": llä tai "Y": llä, älä suorita komentoa ja palaa vääräksi.

-Tulosta

Totta; tulosta koko tiedoston nimi vakiotulosteeseen, jota seuraa rivinvaihto.

-print0

Totta; tulosta koko tiedoston nimi vakiotulosteeseen, jota seuraa nolla-merkki.Tämä sallii tiedostojen nimet, jotka sisältävät uusia viivoja, joita ohjelmat käsittelevätlöytö ulostulo.

optiota -printf muoto

Totta; Tulosta muoto vakiotulosteesta, tulkita ` 'pakenee ja`%' -direktiivejä. Kentän leveydet ja tarkkuudet voidaan määrittää kuten 'printf' C -toiminnolla. Toisin kuin -print, -printf ei lisää merkkijonon loppupäätä. Pakot ja direktiivit ovat:

Hälytyskello.

b

Askelpalautin.

c

Lopeta tulostus heti tästä muodosta ja huuhtele tulostus.

f

Lomake syöte.

n

Uusi rivi.

r

Kuljetuksen palautus.

t

Vaaka-välilehti.

v

Pystysuora välilehti.

\

Kirjaimellinen kääntöviiva (` ').

NNN

Merkki, jonka ASCII-koodi on NNN (oktaali).

Merkki, jota seuraa jokin muu merkki, käsitellään tavallisena merkkinä, joten molemmat tulostetaan.

%%

Kirjaimellinen prosenttiluku.

% A

Tiedoston viimeinen käyttöaika C `ctime -toiminnossa palautetulla tavalla.

% A K

Tiedoston viimeinen käyttöaika määrätyssä muodossa K , joka on joko "@" tai C "strftime" -toimintoa koskeva direktiivi. Mahdolliset arvot K luetellaan jäljempänä; jotkut niistä eivät ehkä ole käytettävissä kaikissa järjestelmissä, koska järjestelmien väliset erot ovat "strftime" -tyyppisiä.

@

sekunnin jälkeen 1. tammikuuta 1970, 00:00 GMT.

Aikakentät:

H

tunti (00..23)

minä

tunti (01..12)

K

tunti (0..23)

l

tunti (1..12)

M

minuutti (00..59)

p

locale-AM tai PM

R

aika, 12 tuntia (hh: mm: ss AP M)

S

toinen (00..61)

T

aika, 24 h (hh: mm: ss)

X

locale-ajan esitys (H: M: S)

Z

aikavyöhykkeen (esim. EDT) tai mitään, jos aikavyöhykettä ei voida määrittää

Päivämääräkentät:

paikallisen lyhennetyn arkipäivän nimi (Sun..Sat)

locale: n koko viikonpäivä nimi, muuttuva pituus (sunnuntai … sunnuntai)

b

locale-lyhennetyn kuukauden nimi (Jan..Dec)

B

locale-koko kuukauden nimi, muuttuva pituus (tammikuu-joulukuu)

C

locale's date and time (kta marraskuu 04 12:02:33 EST 1989)

d

kuukauden päivä (01..31)

D

päivämäärä (mm / pp / vv)

h

sama kuin b

j

päivä (001..366)

m

kuukausi (01..12)

U

viikon lukuvuosi sunnuntaina viikon ensimmäisenä päivänä (00..53)

w

viikonpäivä (0..6)

W

viikkovuoden numero maanantaina viikon ensimmäisenä päivänä (00..53)

x

paikallisen päivämäärän esitys (mm / pp / vv)

y

viimeiset kaksi numeroa vuodessa (00..99)

Y

vuosi (1970 …)

% b

Tiedoston koko 512 tavun lohkossa (pyöristetty ylöspäin).

% C

Tiedoston viimeinen tilan muutosaika C `ctime -toiminnolla palautetun muodon mukaan.

% C K

Tiedoston viimeinen tilan muutosaika määrittämässä muodossa K , joka on sama kuin% A.

% d

Tiedoston syvyys hakemistopuun puitteissa; 0 tarkoittaa, että tiedosto on komentorivin argumentti.

% f

Tiedoston nimi, josta kaikki johtavat hakemistot on poistettu (vain viimeinen elementti).

% F

Tiedostojärjestelmän tyyppi tiedoston ollessa päällä; tätä arvoa voidaan käyttää -fstype.

% g

Tiedoston ryhmän nimi tai numeroryhmän tunnus, jos ryhmällä ei ole nimeä.

% G

Tiedoston numeerinen ryhmän tunnus.

% h

Tiedostonimen johtavat hakemistot (kaikki, mutta viimeinen elementti).

% H

Komentorivi argumentti, jonka alla tiedosto löydettiin.

% i

Tiedoston inode-numero (desimaalina).

% k

Tiedoston koko 1 k-lohkossa (pyöristetty ylös).

% l

Symbolisen linkin kohde (tyhjä merkkijono, jos tiedosto ei ole symbolinen linkki).

% m

Tiedoston lupabitit (oktaalina).

% n

Kovien linkkien määrä tiedostoon.

% p

Tiedoston nimi.

% P

Tiedoston nimi komentorivin argumentin nimellä, jonka perusteella se löydettiin.

% s

Tiedoston koko tavuina.

% t

Tiedoston viimeisin muokkausaika C `ctime -toiminnossa palautetulla tavalla.

% T K

Tiedoston viimeinen muokkausaika määrittämässä muodossa K , joka on sama kuin% A.

% u

Tiedoston käyttäjänimi tai numeerinen käyttäjätunnus, jos käyttäjälle ei ole nimeä.

% U

Tiedoston numeerinen käyttäjätunnus.

Hylätään merkki "%", jota seuraa jokin muu merkki, mutta toinen merkki tulostuu.

-karsia

Jos -poikaa ei anneta, totta; älä laske nykyistä hakemistoa.Jos -epäisyys on annettu, väärä; ei vaikutusta.

-Onko

Totta; luettelo nykyisestä tiedostosta `ls -dils '-muodossa vakiotulosteessa. Lohkokertoimet ovat 1K lohkoja, ellei asetettu ympäristömuuttuja POSIXLY_CORRECT, jolloin käytetään 512-tavuisia lohkoja.

operaattorit

Listattu alenevassa järjestyksessä:

( expr )

Pakota etusija.

! expr

Totta jos expr on väärä.

-ei expr

Sama kuin ! expr .

expr1 expr2

Ja (implisiittinen); Laus2 ei arvioida, jos expr1 on väärä.

expr1 -a Laus2

Sama kuin expr1 expr2 .

expr1 -ja Laus2

Sama kuin expr1 expr2 .

expr1 -o Laus2

Tai; Laus2 ei arvioida, jos expr1 on totta.

expr1 -tai Laus2

Sama kuin expr1 -o Laus2 .

expr1 , Laus2

Lista; molemmat expr1 ja Laus2 arvioidaan aina. Arvo expr1 hylätään; luettelon arvo on arvo Laus2 .

esimerkit

löytää / home-user joe

Etsi jokainen tiedosto käyttäjän joen omistamassa hakemistossa / kotona.

Etsi / usr -name * stat

Etsi jokainen tiedosto hakemistossa / usr päättyy ".stat".

etsi / var / spool -mtime +60

Etsi kaikki tiedostot hakemistosta / var / spool, joka on muokattu yli 60 päivää sitten.

etsi / tmp-nimi ydin -tyy f -print | xargs / bin / rm-f

Etsi nimettyjä tiedostojaydin hakemistossa tai sen alapuolella/ tmp ja poista ne.Huomaa, että tämä toimii väärin, jos on olemassa tiedostoja, jotka sisältävät uusia viivoja, yksittäisiä tai kaksinkertaisia ​​lainauksia tai välilyöntejä.

etsi / tmp -name ydin -tyyppi f -print0 | xargs -0 / bin / rm-f

Etsi nimettyjä tiedostojaydin hakemistossa tai sen alapuolella/ tmp ja poista ne, käsittelevät tiedostonimiä siten, että tiedosto- tai hakemistomerkinnät sisältävät yhden tai kaksinkertaisen lainausmerkin, välilyönnit tai uudet rivit käsitellään oikein.-nimi testi tulee ennen-tyyppi testi, jotta vältetään soittaminenstat (2) jokaisessa tiedostossa.

löytö . -tyy f -exec-tiedosto '{}' ;

Käynnistää `file 'jokaisella tiedostolla nykyiseen hakemistoon tai sen alle. Huomaa, että pidikkeet ovat suljettuina yksittäisiin lainausmerkkeihin, jotta ne voidaan suojata tulkinnalta komentosarjan komentosarjoina. Puolipiste on samalla tavalla suojattu kääntöpuolella, vaikka ";" olisi voinut käyttää myös tässä tapauksessa.

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

Siirrä tiedostojärjestelmä vain kerran, jolloin luetellaan asetetut tiedostot ja hakemistot/root/suid.txt ja suuria tiedostoja/root/big.txt.

Etsi $ HOME -aika 0

Etsi kotihakemistosi tiedostoja, joita on muokattu viimeisen 24 tunnin aikana. Tämä komento toimii tällä tavalla, koska jokaisen tiedoston viimeisin muutosaika on jaettu 24 tunnilla ja loput hylätään. Tämä tarkoittaa sitä, että se sopii yhteen-mtime

0, tiedostoon tulee tehdä muutoksia aikaisemmin, joka on alle 24 tuntia sitten.

löytö . -perm 664

Etsi tiedostoja, joilla on lukea ja kirjoittaa lupaa omistajalle ja ryhmälle, mutta jotka muut käyttäjät voivat lukea, mutta ei kirjoittaa. Tiedostot, jotka täyttävät nämä kriteerit, mutta joilla on muita käyttöoikeusbittejä (esimerkiksi jos joku voi suorittaa tiedoston), ei sovita yhteen.

löytö . -perm -664

Etsi tiedostoja, joilla on lukea ja kirjata lupaa omistajalle ja ryhmälle, ja mitä muita käyttäjiä voi lukea, ottamatta huomioon ylimääräisiä lupasiteitä (esimerkiksi suoritettava bitti). Tämä vastaa tiedostoa, jolla on esimerkiksi tila 0777.

löytö . -perm / 222

Etsi tiedostoja, jotka joku voi kirjoittaa (omistajansa, ryhmänsä tai kenenkään muun).

löytö . -perm / 220 löytö . -perm / u + w, g + w löytö . -perm / u = w, g = w

Kaikki kolme näistä komennoista tekevät samoin, mutta ensimmäinen käyttää tiedostomuodon oktaalin esitystä ja kaksi muuta symbolista muotoa. Nämä komennot etsivät tiedostoja, jotka joko omistajansa tai heidän ryhmänsä voivat kirjoittaa. Tiedostojen ei tarvitse kirjoittaa sekä omistajan että ryhmän mukaan, joko tekevät.

löytö . -perm -220 löytö . -perm -g + w, u + w

Molemmat käskyt tekevät samoin; etsiä tiedostoja, jotka sekä omistajansa että heidän ryhmänsä voivat kirjoittaa.

löytö . -perm -444 -perm / 222! -perm / 111 löytö . -perm -a + r -perm / a + w! -perm / a + x

Nämä kaksi komentoa etsivät jokaiselle (-perm -444 tai -perm -a + r) luettavia tiedostoja ainakin kirjoitusbittiä (-perm / 222 tai -perm / a + w) mutta eivät ole suoritettavissa kaikille (! -perm / 111 ja! -perm / a + x vastaavasti)

Tärkeä: Käytä mies komento ( % mies ), miten komentoa käytetään tietyssä tietokoneessa.