FIND(1) | General Commands Manual | FIND(1) |
NAAM¶
find - zoek bestanden in een hiërarchie van mappen
SAMENVATTING¶
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [begin-punt..] [expressie]
BESCHRIJVING¶
Deze handleiding documenteert de GNU versie van find. GNU find door zoekt de mappen boom vanaf elk opgegeven startpunt terwijl het de expressie van links naar rechts evalueert, volgens de voorrangsregels (zie sectie OPERATORS), totdat de uitkomst bekend is (de linker kant is onwaar voor en operaties, waar voor of, vanaf welk punt find naar de volgende bestandsnaam springt. Als geen startpunt werd opgegeven dan wordt `.' aangenomen.
Als u find gebruikt in een omgeving waar veiligheid belangrijk is (bijvoorbeeld als u het gebruikt om te zoeken naar mappen die schrijfbaar zijn door andere gebruikers), dan wordt u aangeraden het hoofdstuk "Veiligheids Overwegingen" uit de findutils documentatie te lezen, dat Bestanden Zoeken heet en onderdeel is van findutils. Dat document bevat ook meer details en discussie dan deze handleiding, daarom zult u dat mogelijk een betere bruikbare bron van informatie vinden.
OPTIES¶
De -H, -L en -P opties bepalen de behandeling van symbolische koppelingen. Argumenten op de commando-regel die deze volgen, worden geïnterpreteerd als namen van bestanden of mappen die onderzocht moeten worden, tot en met het eerste argument dat begint met een `-', of het argument `(' of `!'. Dit argument en de volgende argumenten worden gezien als een expressie die beschrijft wat er gezocht moet worden. Als geen paden opgegeven werden, dan wordt de huidige map gebruikt. Is geen expressie werd opgegeven, dan wordt de print expressie gebruikt (hoewel u in elk geval beter print0 zou moeten gebruiken).
Deze handleiding spreekt over 'opties' in een lijst van expressies. Deze opties bepalen het gedrag van find maar worden onmiddellijk na de laatste padnaam opgegeven. De vijf 'echte' opties -H, -L, -P, -D en -O moeten opgegeven worden vóór de eerste padnaam, of in het geheel niet. Een dubbel streepje, --, zou theoretisch kunnen worden gebruikt om resterende argumenten aan te duiden die geen opties zijn, maar dat werkt niet echt vanwege de manier waarop find het einde van het volgende pad argument bepaald: het doet dit door te lezen totdat een expressie volgt (die ook start met een '-'). Welnu, als een pad argument zou beginnen met een '-' dan zou find het in plaats van een pad behandelen als een expressie argument. Om u ervan te verzekeren dat alle startpunten als zodanig herkend worden, en speciaal om te voorkomen dan jokertekens patronen worden geëxpandeerd door de aanroepende shell per ongeluk als een expressie argument behandeld worden, is het in het algemeen veiliger om de jokertekens of dubieuze padnamen vooraf te laten gaan door hetzij een './' hetzij een absolute padnaam te gebruiken die begint met een '/'. Als alternatief is het in het algemeen veiliger maar niet overdraagbaar om de GNU optie -files0-from te gebruiken om willekeurige begin punten mee te geven an find.
- -P
- Volg nooit symbolische koppelingen. Dit is standaard gedrag. Indien find informatie over bestanden onderzoekt of toont, en het bestand zelf een symbolische koppeling is, dan wordt de informatie van de eigenschappen van de symbolische koppeling zelf genomen.
- -L
- Volg symbolische koppelingen. Indien find informatie over bestanden onderzoekt of toont, dan wordt deze informatie uit de eigenschappen van het bestand waar de koppeling naar wijst getoond, niet van de koppeling zelf (behalve als het een defecte symbolische koppeling is of find is niet in staat het bestand waar de koppeling naar wijst te onderzoeken). Het gebruik van deze optie impliceert -noleaf. Als u later de -P optie gebruikt, dan is -noleaf nog steeds geldig. Als -L geldig is en find vindt een symbolische koppeling naar een onder-map tijdens het zoeken, dan wordt de onder-map aangewezen door de symbolische koppeling doorzocht.
- Indien de -L optie werd gebruikt, dan zal het -type predicaat altijd passen op het type bestand waar een symbolische koppeling naar wijst in plaats van de koppeling zelf (behalve als de symbolische koppeling defect is). Acties die ervoor kunnen zorgen dat symbolische koppelingen defect raken terwijl find wordt uitgevoerd (b.v. delete kunnen aanleiding geven tot verwarrend gedrag. -L gebruiken zorgt ervoor dat de -lname en -ilname predicaten altijd onwaar retourneren.
- -H
- Volg symbolische koppelingen niet, behalve tijdens het verwerken van de argumenten op de commando regel. Zodra find informatie over bestanden onderzoekt of afdrukt, zal deze ontnomen worden uit de eigenschappen van de symbolische koppeling zelf. De enige uitzondering op de gedrag is als het bestand opgegeven op de commando regel een symbolische koppeling is en de koppeling kan worden bevestigd. In deze situatie wordt de informatie gebruikt waar de koppeling naar wijst (m.a.w. de koppeling wordt gevolgd). De informatie over de koppeling zelf wordt gebruikt om op terug te vallen indien het door de koppeling aangewezen bestand niet onderzocht kan worden. Als -H werd gebruikt en een van de, op de commando regel opgegeven, paden is een symbolische koppeling naar een map, dan zal de inhoud van deze map worden onderzocht (hoewel natuurlijk --maxdepth 0 dit zou voorkomen).
Als meer dan een van -H, -L en -P werd opgegeven, dan vervangt de een alle andere; de laatste optie die op de commando regel werd opgegeven wordt gezet. Omdat dat de standaard is, moet men ervan uitgaan dat de -P optie gezet is, behalve als of -H of -L werd opgegeven.
GNU find 'stat' bestanden frequent tijdens het verwerken van de commando regel zelf, vóór dat enig zoeken begonnen is. Deze opties beïnvloeden ook hoe de argumenten verwerkt worden. Zo zijn er een aantal testen die bestanden opgegeven op de commando regel vergelijken met een bestand dat we onderzoeken. In elk geval zal het bestand worden onderzocht en sommige van zijn eigenschappen worden bewaard. Als het genoemde bestand een symbolische koppeling is, en de -P optie is gezet (of als noch -H noch -L werden gezet), dan wordt de informatie gebruikt voor de vergelijking genomen van de eigenschappen van de symbolische koppeling. Anders wordt deze genomen van de eigenschappen van het bestand waar de koppeling naar wijst. Als find de koppeling niet kan volgen (omdat het b.v. onvoldoende rechten heeft of omdat hij naar een niet bestaand bestand wijst) dan worden de eigenschappen van de koppeling zelf gebruikt.
Als of de -H of -L optie gezet is, dan wordt elke symbolische koppeling gegeven door het volgen van het argument van -newer, en wordt de tijdstempel gehaald van het bestand waar de koppeling naar wijst. Dezelfde consideratie is van toepassing op -newerXY, -anewer en -cnewer.
De -follow optie heeft een vergelijkbaar effect als -L, hoewel het in effect treed vanaf het punt waar deze verschijnt (dit betekent, als -L niet werd gebruikt maar -follow wel, elke symbolische koppeling die verschijnt ná -follow op de commando regel gevolgd en die er vóór niet).
- -D debugopts
- Toon diagnostische informatie; dit kan behulpzaam zijn om problemen te onderzoeken indien find niet doet wat u wilt. De lijst van debug opties moet gescheiden worden met komma´s. Compatibiliteit van de debug opties is neit gegarandeerd tussen uitgaven van findutils. Zie voor de complete lijst van debug opties de uitvoer van find -D help. Geldige debug opties zijn
- exec
- Toon diagnostische informatie over -exec, -execdir, -ok en -okdir
- opt
- Toon diagnostische informatie over de optimalisatie van de expressie boom; zie de -O optie
- rates
- Toon een samenvatting die aangeeft hoe vaak een predicaat slaagde of faalde.
- search
- Navigeer uitgebreid de map boom.
- stat
- Toon berichten als bestanden worden onderzocht met de stat en lstat systeem aanroepen. Het find programma probeert deze aanroepen te minimaliseren.
- tree
- Toon de expressie boom in originele en geoptimaliseerde vorm.
- all
- Schakel alle andere debug opties in (behalve help).
- help
- Let de debug opties uit.
- -Olevel
- Schakel verzoek optimalisatie in. Het find programma herschikt testen met als doel de uitvoer te versnellen terwijl het effect gehandhaafd moet blijven; dat wil zeggen, predicaten met bijeffecten worden niet onderling geherschikt. De optimalisatie uitgevoerd op elk optimalisatie niveau zijn als volgt.
- 0
- Equivalent aan optimalisatie niveau 1.
- 1
- Dit is het standaard optimalisatie niveau, het komt overeen met het traditionele gedrag. Expressies worden van volgorde verandert zodat testen die alleen op de bestandsnamen zijn gebaseerd (bij voorbeeld -name en -regex) als eerste worden uitgevoerd.
- 2
- Elke -type of -xtype test worden uitgevoerd na elke test die alleen gebaseerd is op de namen van de bestanden, maar voor elke test die informatie van de inode vereist. Op moderne versies van Linux worden bestandstypen geretourneerd door readdir() en daarom evalueren deze predicaten sneller dan predicaten die eerst het bestand moeten stat´en. Indien u het -fstype FOO predicaat gebruikt en een bestandssysteem type FOO specificeert dat onbekend is (dat is, aanwezig in '/etc/mtab') op het moment dat find start, dan is dat predicaat equivalent aan -false.
- 3
- Bij dit optimalisatie niveau wordt de op kosten-gebaseerde query optimalisatie ingeschakeld. De volgorde van testen wordt zo aangepast dat goedkope (m.a.w. snelle) testen als eerste worden uitgevoerd en duurdere worden indien nodig later uitgevoerd. Binnen elke kosten band worden predicaten vroeger of later geëvalueerd gebaseerd op of ze succesvol zullen zijn of niet. Dus -o predicaten die hoogstwaarschijnlijk zullen slagen worden later geëvalueerd, en dus -a predicaten die hoogstwaarschijnlijk zullen falen worden eerder geëvalueerd.
- De op kosten-gebaseerde optimalisator heeft een vast idee hoe waarschijnlijk enige test zal slagen. In sommige gevallen houdt de waarschijnlijkheid rekening met het gedrag van een specifieke test (bijvoorbeeld zal -type f waarschijnlijker vaker slagen dan -type c). De kosten-gebaseerde optimalisator wordt momenteel geëvalueerd. Als deze niet daadwerkelijk de prestaties van find verbeterd zal hij weer worden verwijderd. Daarentegen zullen optimalisaties die bewezen hebben betrouwbaar, robuuste en effectief te zijn aangezet worden voor lagere optimalisatie niveau´s mettertijd. Hoewel het standaard gedrag (i.e. optimalisatie niveau 1) niet zal worden veranderd in de 4.3.x series. De findutils test suite voert alle testen in find bij elk optimalisatie niveau uit en verzekert dat de resultaten hetzelfde zijn.
EXPRESSIE¶
Het deel van de commando regel na de lijst van startpunten is de expressie. Het is een soort van query specificatie die beschrijft hoe we bestande vergelijken en wat we doen met bestanden die overeen kwamen. Een expressie is samengesteld uit een rij van dingen:
- Testen
- Testen geven een waar of onwaar terug, normaliter op basis van een eigenschap van het bestand dat we overwegen. De empty test bij voorbeeld alleen waar als het huidige bestand leeg is.
- Acties
- Acties hebben neven effecten (zoals het tonen van iets op de standaard uitvoer) en retourneren ofwel waar of niet-waar, gebaseerd of al dan niet succesvol zijn. De -print actie bijvoorbeeld toont de naam van het huidige bestand op de standaard uitvoer.
- Globale opties
- Globale opties beinvloeden de werking van testen en acties zoals gespecificeerd in enig deel van de commando regel. Globale opties retourneren altijd waar. De -depth optie zorgt er bijvoorbeeld voor dat find het bestandssysteem in omgekeerde volgorde afloopt.
- Positie opties
- Positie opties beinvloeden alleen de daarop volgende testen of acties. Positie opties retourneren altijd waar. De -regextype optie is bijvoorbeeld positioneel, die het reguliere expressie dialect specificeert voor reguliere expressies die later op de commando regel voorkomen.
- Operatoren
- Operatoren koppelen de andere items in een expressie. Voorbeelden zijn -o (de logische OF) en -a (de logische EN). Als een operator ontbreekt dan wordt -a aangenomen.
De -print actie wordt uitgevoerd op alle bestanden waarvoor de hele expressie waar is, behalve als deze een actie bevat anders dan -prune of -quit. Acties die de standaard -print verbieden zijn -delete, -exec, -execdir, -ok, -okdir, -fls, -fprint, -fprintf, -ls, -print en -printf.
De -delete actie gedraagt zich ook als een optie (omdat deze -depth impliceert.
POSITIONALE OPTIES¶
Positionale opties geven `waar' terug. Ze hebben altijd gevolgen en worden nietalleen verwerkt als hun positie in de expressie bereikt wordt.
- -daystart
- Meet de tijden (voor -amin, -atime, -cmin, -ctime, -mmin, en -mtime) van het begin van vandaag in plaats van 24 uur geleden. Dezeoptie beïnvloed alleen testen die later op de commando regel verschenen.
- -follow
- Afgekeurd; gebruik de -L optie in plaats hiervan. Volg symbolische koppelingen. Impliceert -noleaf. De -follow optie beïnvloed alleen die testen die verschijnen na deze op de commando regel. Behalve als de -H of -L opties werden opzet, veranderd de positie van de -follow optie het gedrag van het het -newer predicaat; alle bestanden opgegeven als argument van -newer worden gevolgd als dat symbolische koppelingen zijn. Dezelfde overweging is van toepassing op -newerXY, -anewer en -cnewer. Hiermee vergelijkbaar zal het -type predicaat altijd passen op het type van het bestand waar de symbolische koppeling naar wijst in plaats van het bestand zelf. Het gebruik van -follow zorgt er voor dat de -lname en -ilname predicaten altijd onwaar terug geven.
- -regextype type
- Verandert de reguliere expressie syntax zoals begrepen door de -regex en -iregex testen die later op de commando regel verschijnen. Gebruik -regextype help om te zien welke typen reguliere expressie begrepen worden. De Texinfo documentatie (Zie ZIE OOK) legt de betekenis van en de verschillen tussen de diverse reguliere expressies uit.
- -warn, -nowarn
- Schakel waarschuwing berichten aan of uit. Deze waarschuwingen hebben alleen betrekking op het gebruik van de commando regel, niet op elke conditie die find tegen kan komen terwijl het mappen doorzoekt. Het standaard gedrag komt overeen met -warn als de standaard invoer een tty is, en anders met -nowarn. Als er een waarschuwing wordt geproduceerd die gerelateerd is aan het gebruik van de commando regel, dan wordt de afsluit status van find niet gewijzigd. Als de POSIXLY_CORRECT omgevingsvariabele is gezet en -warn ook werd gebruikt dan is het niet gespecificeerd of er enige waarschuwing actief zal worden.
GLOBALE OPTIES¶
Globale opties retourneren altijd waar. Globale opties gelden zelfs voor testen die eerder op de commando regel werden opgegeven. Om verwarring te voorkomen moeten globale opties na de lijst met startpunten maar voor de eerste test, positionele optie of actie, opgegeven worden. Als u een globale optie op een andere plek opgeeft zal find een waarschuwing geven, die uitlegt dat dat verwarrend kan zijn.
De globale opties komen voor na de lijst van startpunten, en zijn daarom niet van dezelfde soort opties als bijvoorbeeld -L.
- -d
- De synoniem van-depth, voor compatibiliteit met FreeBSD, NetBSD, MacOS X en OpenBSD.
- -depth
- Verwerk de inhoud van elke map vóór de map zelf. De -delete actie impliceert ook -depth.
- -files0-from bestand
- Lees de beginpunten van bestand in plaats van ze te verkrijgen via
de commando regel. In tegenstelling tot de bekende beperkingen van het
verkrijgen van beginpunten via argumenten op de commando regel, namelijk
de limitatie van het aantal bestandsnamen en de inherente
ambiguïteit van bestandsnamen die botsen met optie namen, staat
deze optie toe om veilig een willekeurig aantal van startpunten aan
find mee te geven.
Het gebruik van deze optie en het doorgeven van startpunten op de commando regel sluit elkaar uit, en worden daarom niet tegelijkertijd toegestaan.
Het bestand argument is verplicht. Men kan -files0-from - gebruiken om de lijst van startpunten te lezen van de standaard invoer stream, en b.v. van een pijp. In dit geval zijn de acties -ok en -okdir niet toegestaan, omdat deze duidelijk interfereren met het lezen van standaard invoer om op deze manier de bevestiging van de gebruiker te verkrijgen.
De startpunten in bestand moeten worden gescheiden door ASCII NUL tekens. Twee opeenvolgende NUL tekens, m.a.w. een startpunt met een bestandsnaam van lengte nul wordt niet toegestaan en zal leiden tot een fout diagnose gevolgd door een niet-nul afsluit code.
In dit geval is het gegeven bestand leeg, find zal geen enkel startpunt verwerken en daarom onmiddellijk na het ontleden van de programma argumenten eindigen. Dit is anders dan de standaard invocatie waar find aanneemt dat de huidige map het startpunten is zodra er geen pad argument werd mee gegeven.
Het verwerken van de beginpunten is als gebruikelijk, b.v. find zal in submappen duiken tenzij dit voorkomen werd. Om alleen de beginpunten te verwerken kan men additioneel nog -maxdepth 0 mee geven.
Verdere opmerkingen: indien een bestand meer dan eens werd opgegeven in het invoer bestand, dan is het niet zeker dat het ook meer dan eens werd gevonden. Als het bestand werd veranderd tijdens het uitvoeren van find dan is het resultaat niet bepaald. Tot slot, is de zoek positie in het genoemde bestand op het moment dat find eindigt ook niet bepaald. Met "niet bepaald" wordt hier bedoeld dat het al dan niet werkt of een specifiek ding doet, en dat het gedrag anders kan zijn tussen de verschillende platformen, of van findutils release tot release.
- -help, --help
- Toon een samenvatting van het gebruik van het commando find en stop.
- -ignore_readdir_race
- Normaliter zal find een fout melden wanneer het een bestand niet
kan "stat"-en. Als u deze optie gebruikt en een bestand werd
gewist tussen het tijdstip date find de naam van het bestand van de
map las en de tijd dat het het bestand probeert te "stat"-en,
dan wordt geen foutmelding gegeven. Dit is ook van toepassing op bestanden
of mappen wiens naam op de commando regel werden opgegeven. De optie wordt
gezet op het moment dat de commando regel wordt gelezen, hetgeen betekent
dat u niet een deel van het bestandssysteem kunt doorzoeken met deze optie
aan een een ander deel met de optie uit (als u dat nodig heeft dan zult u
twee find commando´s moeten maken, een met de optie aan en
een zonder).
Bovendien van find met de -ignore_readdir_race optie fouten van de -delete. actie negeren in het geval het bestand verdween vanaf het moment dat de ouder map werd gelezen: het zal geen fout diagnostiek melden en de terugkeer code van de -delete actie zal waar zijn.
- -maxdepth niveaus
- Daal maximaal niveaus (een niet-negatief heel getal) van mappen af onder het start-punten. Gebruik -maxdepth 0 om de testen en acties alleen op de start-punten toe te passen.
- -mindepth niveaus
- Pas geen testen of acties toe op niveaus lager dan niveaus (een niet negatief heel getal). -mindepth 1 betekend verwerk alle bestanden behalve de start-punten.
- -mount
- Daal niet af in mappen op andere bestandsystemen. Een alternatief voor -xdev, voor overdraagbaarheid met andere versies van find.
- -noignore_readdir_race
- Schakel het effect van -ignore_readdir_race uit.
- -noleaf
- Maak uitvoering niet sneller door aan te nemen dat mappen 2 minder submappen bevatten dan hun harde koppelingen aantal. Deze optie is nodig bij zoeken door bestandssystemen die de Unix map-koppelingen gewoontes niet volgen zoals CD-ROM of MS-DOS bestandssystemen, of AFS volume mount punten. Elke map op een normaal Unix bestandsysteem heeft tenminste 2 harde koppelingen: zijn naam en zijn `.' ingang. Daar bovenop hebben zijn submappen (als aanwezig) elk een `..' ingang verbonden naar die map. Wanneer find een map onderzoekt, nadat het 2 minder submappen rekent dan het koppelingen aantal van de map, weet het dat de rest van de ingangen in de map niet-mappen zijn (`blad' bestanden in de mappen boom). Als alleen debestandsnamen onderzocht dienen te worden is het niet nodig ze te beoordelen; dit geeft een belangrijke toename van zoek snelheid.
- -version, --version
- Druk het find versie nummer af en eindig.
- -xautofs
- Daal niet af in mappen op autofs bestandssystemen.
- -xdev
- Daal niet af in mappen op andere bestandsystemen.
TESTS¶
Sommige testen, bijvoorbeeld -newerXY en -samefile, staan toe bestanden, die onderzochie bestand op de commando regel, te vergelijken. Indien deze testen worden gebruikt, wordt de interpretatie van het referentie bestand bepaald door de opties -H, -L and -P en enige voorafgaande -follow, maar wordt het referentie bestand slechts eenmaal onderzocht, op het moment dat de commando regel wordt gelezen. Als het referentie bestand niet kan worden onderzocht (bijvoorbeeld, als de stat(2) systeem aanroep faalt), dan wordt een foutmelding getoond en zal find met een niet-nul status eindigen.
Een numeriek argument n kan worden meegegeven aan testen (zoals -amin, -mtime, -gid, -inum, -links, -size, -uid en -used) als
- +n
- voor groter dan n,
- -n
- voor minder dan n,
- n
- voor precies n.
Ondersteunde testen:
- -amin n
- Het bestand werd minder dan, meer dan of exact n minuten geleden benaderd.
- -anewer bestand
- De tijd van de laatste toegang van het huidige bestand is recenter dan die van de laatste datum wijziging van het referentie bestand. Als referentie een een symbolische koppeling is en de -H optie of de -L optie werd gebruikt, dan wordt altijd de laatste wijzigingstijd van het bestand waarnaar gewezen gebruikt.
- -atime n
- Het bestand werd minder dan, meer dan of exact n*24 uur geleden benaderd. Als find erachter komt hoeveel 24-uur perioden geleden een bestand voor het laatst benaderd werd, dan wordt elke fractie genegeerd om zo met -atime +1 over een te komen, een bestand moet op zijn minst two dagen geleden zijn benaderd.
- -cmin n
- De status van het bestand werd minder dan, meer dan of exact n minuten geleden gewijzigd.
- -cnewer bestand
- Tijd van de laatste status verandering van het huidige bestand is recenter dan dat van de laatste datum wijziging van het referentie bestand. Als referentie een symbolische koppeling is en de -H optie of de -L optie werden gebruikt, dan wordt altijd de tijd van de laatste datum wijziging van het bestand waar het naar wijst gebruikt.
- -ctime n
- Bestand-status werd voor het laatst minder dan, meer dan of exact n*24 uur geleden veranderd. Zie het commentaar voor -atime om te begrijpen hoe het afronden de interpretatie van de bestandsstatus veranderings tijden beïnvloed.
- -empty
- Bestand is leeg en is of een normaal bestand, of een map.
- -executable
- Vind bestanden die uitvoerbaar en mappen die doorzoekbaar zijn (in de betekenis van de gezochte bestandsnaam) door de huidige gebruiker. Dit houdt rekening met toegangs controle lijsten en andere rechten artefacten die de -perm test negeert. Deze test maakt gebruik van de access(2) systeem aanroep, en kan dus voor de gek worden gehouden door NFS servers die UID uitvoeren (of root-squashing), omdat veel systemen access(2) in de kernel van de client implementeren en daarom geen gebruik kunnen maken van de UID informatie bijgehouden in de server. Omdat deze test alleen is gebaseerd op het resultaat van de access(2) systeem aanroep, is er geen garantie dat een bestand waarvoor de test succesvol was ook daadwerkelijk kan worden uitgevoerd.
- -false
- Altijd onwaar.
- -fstype soort
- Bestand staat op een bestandssysteem van type soort. De geldige bestandssysteem typen verschillen tussen verschillende versies van Unix; een onvolledige lijst van bestandssysteem soorten die geaccepteerd worden op een of andere versie van Unix is: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. U kunt -printf met de %F richtlijn gebruiken om de typen van uw bestandssystemen te zien.
- -gid n
- Het numerieke groep ID van bestand is kleiner dan, groter dan of exact n.
- -group gnaam
- Bestand hoort bij groep gnaam (numeriek groep ID toegestaan).
- -ilname patroon
- Net als -lname, maar de overeenkomst is ongevoelig voor het verschil tussen hoofd- en kleine- letters. Als de -L optie of de -follow optie werden gebruikt dan geeft deze test een onwaar terug behalve als de symbolische koppeling defect was.
- -iname patroon
- Net als -name, maar de overeenkomst is ongevoelig voor het verschil tussen hoofd- en kleine- letters. Bijvoorbeeld, de patronen `fl*' en `F???' komen overeen met de namen `Flip', `FLIP', `flip', `fLIp', enz.
- -inum n
- Bestand heeft inode nummer kleiner dan, groter dan of exact n. Het is normaliter eenvoudiger om in plaats daarvan de -samefile test te gebruiken.
- -ipath patroon
- Net als -path, maar de overeenkomst is ongevoelig voor het verschil tussen hoofd- en kleine- letters.
- -iregex patroon
- Net als -regex, maar de overeenkomst is ongevoelig voor het verschil tussenhoofd- en kleine- letters.
- -iwholename patroon
- Zie -ipath. Dit alternatief is minder overdraagbaar dan -ipath.
- -links n
- Bestand heeft minder dan, meer dan of exact n harde koppelingen.
- -lname patroon
- Bestand is een symbolische koppeling wiens inhoud overeenkomt met shell patroon patroon. De meta-tekens behandelen `/' en `.' niet speciaal. Als de -L optie of de -follow optie werden gebruikt dan geeft deze test een onwaar terug behalve als de symbolische koppeling defect was.
- -mmin n
- Bestandsgegevens werden het laatst minder dan, meer dan of exact n minuten geleden aangepast.
- -mtime n
- Bestandgegevens werden het laatst minder dan, meer dan of exact n*24 uur geleden aangepast. Zie het commentaar voor -atime om te begrijpen hoe het afronden de interpretatie van de bestandsstatus veranderings tijden beïnvloed.
- -name patroon
- Basis van de bestandsnaam (het pad met het voorvoegsel van mappen verwijderd) komt overeen met shell patroon patroon. Omdat het voorvoegsel van mappen verwijderd is, zullen de bestandsnamen die bekeken worden voor de overeenkomst met -name nooit een schuine streep bevatten, daarom zal '-name a/b' nooit overeenkomen met iets (u dient mogelijk -path in plaats hiervan te gebruiken). Er zal een waarschuwing gegeven worden als u dit probeert te doen, behalve als de omgevingsvariabele POSIXLY_CORRECT werd gezet. De meta-karakters (`*', `?', and `[]') passen op een `.' aan het begin van de basis (dit is een verandering in findutils-4.2.2; zie sectie VOLDOET AAN hieronder). Om een map en de bestanden daaronder te negeren, gebruik dan -prune in plaats van het controleren van elk bestand in de boom; zie een voorbeeld in de beschrijven van die actie. Haakjes worden niet herkend als zijnde speciaal, ondanks het feit dat sommige shells inclusief Bash haakjes gebruiken met een speciale betekenis in shell patronen. Het herkennen van de bestandsnaam wordt gedaan door het gebruik van de fnmatch(3) bibliotheek functie. Vergeet niet het patroon met aanhalingstekens te omgeven, om te voorkomen dat de shell het expandeert.
- -newer bestand
- De tijd van de laatste data modificatie van het huidige bestand is recenter dan die van de laatste date modificatie van het reference bestand. Als reference een symbolische koppeling is en de -H optie of de -L optie werd gezet, dan wordt de tijd van de laatste data modificatie van het bestand waar deze naar wijst altijd gebruikt.
- -newerXY referentie
- Slaagt als tijdstempel X van het overwogen bestand nieuwer is dan
de tijdstempel Y van de bestand referentie. De letters
X en Y kan een van de onderstaande letters zijn:
a De toegangstijd van het bestand referentie B De aanmaak tijd van het bestand referentie c De veranderingstijd van de inode van referentie m De wijzigingstijd van het bestand referentie t referentie werd direct als een tijd geïnterpreteerd. Een aantal combinaties zijn ongeldig; bij voorbeeld, is het ongeldig dat X gelijk is aan t. Sommige combinaties zijn niet geïmplementeerd op alle systemen; B is b.v. niet geïmplementeerd op alle systemen. Als een ongeldige of niet ondersteunde combinatie van XY werd opgegeven, dan resulteert dit in een fatale fout. Tijd specificaties worden geïnterpreteerd zoals die van het argument van de -d optie van GNU date. Als u de aanmaak tijd van een referentie bestand probeert te gebruiken en de aanmaak tijd kon niet worden bepaald dan resulteert dit in een fatale fout. Als u een test specificeert die verwijst naar de aanmaak tijd van onderzochte bestanden, dan zal deze test falen voor elk bestand waarvan de aanmaak tijd onbekend is.
- -nogroup
- Geen enkele groep hoort bij het numerieke groep ID van bestand.
- -nouser
- Geen enkele gebruiker hoort bij het bestand numerieke ID.
- -path patroon
- Bestandsnaam komt overeen met shell patroon patroon. De
meta-tekensbehandelen `/' en `.' niet speciaal; dus, bijvoorbeeld,
find . -path "./sr*sc"
zal een ingang voor een map genaamd './src/misc' (als die bestaat) tonen. Gebruik -prune mm een hele mappen boom te negeren, in plaats van elk bestand in de boom te testen. Merk op dat de test op de overeenkomst van het patroon van toepassing is op de hele bestandsnaam, beginnend bij een van de begin punten genoemd op de commando regel. Het is hier alleen zinvol om een absoluut padnaam te gebruiken als het relevante begin punt ook een absoluut pad is. Dit betekent dat dit commando nooit op iets zal passen:
find bar -path /foo/bar/myfile -print
Find vergelijkt het -path argument met de samenvoeging van de map naam en de basis naam van het onderzochte bestand. Omdat de samenvoeging nooit eindigt met een schuine streep, zullen -path argumenten eindigend met een schuine streep met niks overeenkomen (behalve misschien met een beginpunt opgegeven op de commando regel). Het predicaat -path wordt ook ondersteund door HP-UX find en is onderdeel van de POSIX 2008 standaard. - -perm modus
- Bestandspermissie-bits zijn precies mode (octaal of symbolisch). Omdat een exacte overeenkomst is vereist, als u deze vorm wilt gebruiken voor symbolische modi, dan dient u een behoorlijk complexe mode tekenreeks op te geven. Bijvoorbeeld '-perm g=w' zal alleen passen op bestanden met een mode 0020 (dat is, die waarvoor de groep schrijf rechten het enige recht is dat gezet werd). Het is meer waarschijnlijk dat u de `/' of `-' vormen wilt gebruiken, bijvoorbeeld `-perm -g=w', die elk bestand met de groep schrijf rechten vind. Zie de VOORBEELDEN sectie voor enkele illustratieve voorbeelden.
- -perm -modus
- Alle rechten bits mode zijn gezet voor het bestand. Symbolische modi worden geaccepteerd in deze vorm, en dit is de gebruikelijke manier op welke u deze zou willen gebruiken. U dient `u', `g' of `o' op te geven indien u een symbolische mode wilt gebruiken. Zie de VOORBEELDEN sectie voor enkele illustratieve voorbeelden.
- -perm /modus
- Enige rechten bits mode zijn gezet voor het bestand. Symbolische modi worden geaccepteerd in deze vorm. U dient `u', `g' of `o' op te geven indien u een symbolische mode gebruikt. Zie de VOORBEELDEN sectie voor enkele illustratieve voorbeelden. Als er geen rechten bits in mode werden gezet, dan past deze test op elk bestand (het idee is hier om consistent met het gedrag van -perm -000).
- -perm +modus
- Dit wordt niet langer ondersteund (en is verouderd vanaf 2005). Gebruik -perm /mode in de plaats hiervan.
- -readable
- Vindt bestanden die leesbaar zijn door de huidige gebruiker. Er wordt rekening gehouden met toegang controle lijsten en andere permissie artefacten die de -perm test negeert. Deze test maakt gebruik van de access(2) systeem aanroep en kan voor de gek gehouden worden door NFS servers die UID mapping (of root- squashing) uitvoeren, omdat veel systemen access(2) in de kernel van de client implementeren kunnen zij niet gebruik maken van de UID mapping informatie zoals die door de server wordt bijgehouden.
- -regex patroon
- Bestandsnaam komt overeen met reguliere expressie patroon. Dit is een overeenkomst met het hele pad, er wordt niet in gezocht. Bijvoorbeeld, om met een bestand genaamd `./flopje3' overeen te komen, kunt u de reguliere expressie `.*opje.' of `.*o.*3', maar niet `o.*e3' gebruiken. De reguliere expressies die door find begrepen worden zijn standaard Emacs Reguliere Expressie (behalve dat ´. ' past op een nieuwe regel), echter kan dit worden veranderd met de -regextype optie.
- -samefile naam
- Bestand verwijst naar dezelfde inode als naam. Wanneer -L gebruikt werd, dan kan deze symbolische koppelingen bevatten.
- -size n[cwbkMG]
- Bestand gebruikt afgerond minder dan, meer dan of exact n eenheden ruimte. De volgende achtervoegsels kunnen gebruikt worden:
- `b'
- voor 512-byte blokken (dit is standaard als geen achtervoegsel gebruikt werd).
- `c'
- voor bytes
- `w'
- voor twee-byte woorden
- `k'
- voor kibibytes (KiB, eenheden van 1024 bytes)
- `M'
- voor mebibytes (MiB, eenheden van 1024 * 1024 = 1048576 bytes)
- `G'
- voor gibibytes (GiB, eenheden van 1024 * 1024 * 1024 = 1073741824 bytes)
- De grootte is eenvoudig het st_size element van de struct stat gezet door de lstat (of stat) systeem aanroep, afgerond zoals hierboven aangegeven. Met andere woorden, het is consistent met de resultaten die u verkrijgt met ls -l. Onthoud dat de `%k' en `%b' formaat specificaties van -printf ijle bestanden anders behandelen. Het 'b' achtervoegsel duid altijd 512-byte blokken aan en nooit 1024-byte blokken, dit is anders dan het gedrag van -ls.
- De + en - voorvoegsels betekenen groter dan en kleiner dan, zoals gebruikelijk; m.a.w. een exacte grootte van n eenheden komt niet overeen. Merk op dat de grootte wordt afgerond op de volgende eenheid. Daarom is -size -1M niet equivalent met -size -1048576c. De eerste komt alleen overeen met lege bestanden, de laatste vind bestanden van 0 tot 1.048.575 bytes.
- -true
- Altijd waar.
- -type c
- Bestand is van soort c:
- b
- blok (gebufferd) speciaal
- c
- karakter (ongebufferd) speciaal
- d
- directory
- p
- benoemde pijp (FIFO)
- f
- normaal bestand
- l
- symbolische koppeling; dit is nooit waar als de -L optie of de -follow optie gezet zijn, behalve als de symbolische koppeling defect is. Indien u wenst te zoeken naar symbolische koppelingen terwijl -L gezet is, gebruik dan -xtype.
- s
- socket
- D
- deur (Solaris)
- Om te zoeken naar meer dan een type in een keer, kunt u de gecombineerde lijst van de typen letters gescheiden door een komma opgeven ¨," (GNU uitbreiding).
- -uid n
- Het numerieke gebruiker ID van het bestand is kleiner dan, groter dan of exact n.
- -used n
- Het bestand werd voor het laatste benadert minder dan, meer dan of exact n dagen nadat zijn status voor het laatst werd veranderd.
- -user gnaam
- Bestand is eigendom van gebruiker gnaam (numeriek gebruiker ID toegestaan).
- -wholename patroon
- Zie -path. Dit alternatief is minder overdraagbaar dan -path.
- -writable
- Vindt bestanden die schrijfbaar zijn door de huidige gebruiker. Er wordt rekening gehouden met toegang controle lijsten en andere permissie artefacten die de -perm test negeert. Deze test maakt gebruik van de access(2) systeem aanroep en kan voor de gek gehouden worden door NFS servers die UID mapping (of root- squashing) uitvoeren, omdat veel systemen access(2) in de kernel van de client implementeren kunnen zij niet gebruik maken van de UID mapping informatie zoals die door de server wordt bijgehouden.
- -xtype c
- Hetzelfde als -type tenzij het bestand een symbolische koppeling is. Voor symbolische koppelingen: als de -H of -P optie niet gegeven werd, `waar' als het bestand een koppeling is naar een bestand van soort c; als de -L optie werd gegeven, `waar' als c gelijk is aan `l'. Met andere woorden, voor symbolische koppelingen test -xtype het type bestand dat -type niet test.
- -context patroon
- (alleen SELinux) De veiligheid context van het bestand past op glob patroon.
ACTIES¶
- -delete
- Verwijder bestanden; waar als het verwijderen lukte. Als het verwijderen
mislukte, dan wordt een foutmelding gegeven, en zal de
beëindigingsstatus van find niet-nul zijn (zodra het
uiteindelijk eindigt).
Waarschuwing: Vergeet niet dat find de commando regel evalueert als een expressie, het vooraf laten gaan van -delete zorgt er voor dat find alles onder het door u opgegeven startpunt probeert te wissen.
Het gebruik van de -delete actie op de commando regel zal automatisch de -depth optie activeren. Op zijn beurt maakt -depth -prune niet effectief, de -delete actie kan niet bruikbaar worden gecombineerd met -prune.
Often, the user might want to test a find command line with -print prior to adding -delete for the actual removal run. To avoid surprising results, it is usually best to remember to use -depth explicitly during those earlier test runs.
De -delete actie zal falen een map te wissen, behalve als deze leeg is.
Samen met de -ignore_readdir_race optie zal find fouten van de -delete actie negeren in het geval dat het bestand verdween na het moment dat de ouder map werd gelezen: het zal geen fout diagnose tonen, de afsluit code niet naar niet-nul veranderen, bovendien zal de afsluit code van -delete actie 'waar' zijn.
- -exec opdracht ;
- Voer opdracht uit; `waar' als 0 status teruggegeven is. Alle volgende argumenten voor find worden als argumenten voor de opdracht genomen totdat een argument bestaande uit `;' wordt tegengekomen. De string `{}' wordt vervangen door de huidige bestandsnaam die wordt verwerkt, overal waar het opduikt in de argumenten voor de opdracht, niet alleen in argumenten waar het alleen is, zoals in sommige versies van find. Allebei deze constructies moeten misschien ge-escape't (met een `\') of geciteerd worden om ze te beschermen tegen interpretatie door de shell. De opdracht wordt uitgevoerd in de start map.
- -exec opdracht {} +
- This variant of the -exec action runs the specified command on the selected files, but the command line is built by appending each selected file name at the end; the total number of invocations of the command will be much less than the number of matched files. The command line is built in much the same way that xargs builds its command lines. Only one instance of `{}' is allowed within the command, and it must appear at the end, immediately before the `+'; it needs to be escaped (with a `\') or quoted to protect it from interpretation by the shell. The command is executed in the starting directory. If any invocation with the `+' form returns a non-zero value as exit status, then find returns a non-zero exit status. If find encounters an error, this can sometimes cause an immediate exit, so some pending commands may not be run at all. For this reason -exec my-command ... {} + -quit may not result in my-command actually being run. This variant of -exec always returns true.
- -execdir opdracht ;
- -execdir opdracht {} +
- Like -exec, but the specified command is run from the subdirectory containing the matched file, which is not normally the directory in which you started find. As with -exec, the {} should be quoted if find is being invoked from a shell. This a much more secure method for invoking commands, as it avoids race conditions during resolution of the paths to the matched files. As with the -exec action, the `+' form of -execdir will build a command line to process more than one matched file, but any given invocation of command will only list files that exist in the same subdirectory. If you use this option, you must ensure that your PATH environment variable does not reference `.'; otherwise, an attacker can run any commands they like by leaving an appropriately-named file in a directory in which you will run -execdir. The same applies to having entries in PATH which are empty or which are not absolute directory names. If any invocation with the `+' form returns a non-zero value as exit status, then find returns a non-zero exit status. If find encounters an error, this can sometimes cause an immediate exit, so some pending commands may not be run at all. The result of the action depends on whether the + or the ; variant is being used; -execdir command {} + always returns true, while -execdir command {} ; returns true only if command returns 0.
- -fls bestand
- Waar; net als -ls maar schrijf naar bestand zoals -fprint. Het uitvoer bestand wordt altijd gemaakt, zelfs als het predicaat nooit past. Zie de ONGEBRUIKELIJKE BESTANDSNAMEN sectie voor informatie over hoe ongebruikelijke tekens in bestandsnamen worden afgehandeld.
- -fprint bestand
- Waar; schrijf de volle bestandsnaam naar bestand bestand. Als bestand niet bestaat als find draait, wordt het gemaakt; als het bestaat, wordt het afgehakt. De bestandsnamen “/dev/stdout” en “/dev/stderr” worden speciaal behandeld; zij verwijzen naar de standaard uitvoer en standaard fout uitvoer, respectievelijk. Zie de ONGEBRUIKELIJKE BESTANDSNAMEN sectie voor informatie over hoe ongebruikelijke tekens in bestandsnamen worden afgehandeld.
- -fprint0 bestand
- Waar; zoals -print0 maar schrijf naar bestand zoals -fprint. Zie de ONGEBRUIKELIJKE BESTANDSNAMEN sectie voor informatie over hoe ongebruikelijke tekens in bestandsnamen worden afgehandeld.
- -fprintf bestand vorm
- Waar; zoals -printf maar schrijf naar bestand zoals -fprint. Zie de ONGEBRUIKELIJKE BESTANDSNAMEN sectie voor informatie over hoe ongebruikelijke tekens in bestandsnamen worden afgehandeld.
- -ls
- 'Waar'; toon het huidige bestand in ls -dils vorm op standaard uitvoer. Het aantal blokken is in blokken van 1 KB, tenzij de omgevingsvariabele POSIXLY_CORRECT gezet is, in welk geval 512-byte blokken worden gebruikt. Zie de ONGEBRUIKELIJKE BESTANDSNAMEN sectie voor informatie over hoe niet gebruikelijke tekens in bestandsnamen worden afgehandeld.
- -ok opdracht ;
- Zoals -exec maar vraag de gebruiker eerst. Voer het commando uit als de gebruiker akkoord is. Retourneer anders 'onwaar'. Als het commando wordt uitgevoerd, wordt zijn standaard invoer omgeleid van /dev/null. Deze actie mag niet tegelijkertijd met de -files0-from optie worden opgegeven
- The response to the prompt is matched against a pair of regular expressions to determine if it is an affirmative or negative response. This regular expression is obtained from the system if the POSIXLY_CORRECT environment variable is set, or otherwise from find's message translations. If the system has no suitable definition, find's own definition will be used. In either case, the interpretation of the regular expression itself will be affected by the environment variables LC_CTYPE (character classes) and LC_COLLATE (character ranges and equivalence classes).
- -okdir opdracht ;
- Zoals -execdir maar vraag de gebruiker eerst op dezelfde manier als voor -ok. Retourneer 'onwaar' als de gebruiker niet akkoord is . Als het commando wordt uitgevoerd, wordt zijn standaard invoer omgeleid van /dev/null. Deze actie mag niet tegelijkertijd met de -files0-from optie worden opgegeven.
- Waar; druk de volle bestandsnaam af op de standaard uitvoer, gevolgd door een nieuwe regel. Zie de ONGEBRUIKELIJKE BESTANDSNAMEN sectie voor informatie over hoe ongebruikelijke tekens in bestandsnamen worden afgehandeld.
- -print0
- Waar; druk de volle bestandsnaam af op de standaard uitvoer, gevolgd door een nul karakter. Dit laat bestandsnamen die nieuwe regels bevatten toe om goed geïnterpreteerd te kunnen worden door programma's die de find uitvoer verwerken.
- -printf vorm
- 'Waar'; druk vorm af op de standaard uitvoer, interpreteer `\' stuurcodes en `%' richtlijnen. Veld breedten en precisie kunnen opgegeven worden zoals bij de printf(3) C functie. Merk op dat veel velden worden getoond als %s inplaats van %d, en dit kan beteken dat vlaggen niet werken zoals u zou verwachten. Dit betekent ok dat de '-' vlag niet werkt (dit dwingt velden links uitgelijnd te zijn). Niet zoals -print, voegt -printf geen nieuwe regel toe aan het einde van het string. De stuurcodes en richtlijnen zijn:
- \a
- Alarm bel.
- \b
- Backspace.
- \c
- Stop afdrukken van deze vorm onmiddellijk en spoel de uitvoer door.
- \f
- Nieuwe bladzijde.
- \n
- Nieuwe regel.
- \r
- Wagen terugloop.
- \t
- Horizontale tabulatie.
- \v
- Verticale tab.
- \0
- ASCII NUL.
- \\
- Een letterlijke backslash (`\').
- \NNN
- Het teken wiens ASCII code NNN (octaal) is.
Een `\' karakter gevolgd door een ander karakter wordt behandeld als een normaal karakter, zodat ze allebei afgedrukt worden.
- %%
- Een letterlijk procent teken.
- %a
- Laatste toegangstijd van het bestand in formaat zoals teruggegeven door de C ctime(3) functie.
- %Ak
- Laatste toegangstijd van het bestand in de vorm gegeven door k, die of `@' is of een richtlijn voor de C strftime(3) functie. De mogelijke waardes voor k worden onder gegeven; sommige ervan zijn misschien niet beschikbaar op alle systemen, ten gevolge van verschillen in `strftime' tussen systemen.
- @
- seconden sinds 1 januari 1970, 00:00 GMT, met een fractie.
Tijd velden:
- H
- uur (00...23)
- I
- het uur (01..12)
- k
- uur ( 0..23)
- l
- uur ( 1..12)
- M
- minuut (00...59)
- p
- locale AM of PM
- r
- tijd, 12-uur (hh:mm:ss [AP]M)
- S
- Seconden (00.00 .. 61.00). Er is een fractie.
- T
- tijd, 24-uur (hh:mm:ss.xxxxxxxxxx)
- +
- Datum en tijd, gescheiden door een '+', bijvoorbeeld `2004-04-28+22:22:05.0'. Dit is een GNU uitbreiding. De tijd wordt gegeven in de huidige tijd zone (die beïnvloed kan zijn door het zetten van de TZ omgevingsvariabele). Het seconden veld bevat een fractie.
- X
- locale tijd voorstelling (H:M:S). Het seconden veld bevat een fractie.
- Z
- tijd zone (o.a. CET), of niets als de tijd zone niet vast te stellen is
Datum velden:
- a
- locale afgekorte weekdag naam (Zon..Zat)
- A
- locale volle weekdag naam, variabele lengte (Zondag..Zaterdag)
- b
- locale afgekorte maand naam (jan..dec)
- B
- locale volle maand naam, variabele lengte (januari..december)
- c
- lokale datum en tijd (Zat Nov 04 12:02:33 CET 1989). Het formaat is hetzelfde als voor ctime(3) en om compatibiliteit te waarborgen met dat formaat, is er geen fractie in het seconden veld.
- d
- dag van de maand (01..31)
- D
- datum (mm/dd/jj)
- F
- datum (jjjj-mm-dd)
- h
- hetzelfde als b
- j
- de dag in het jaar (001...366)
- m
- de maand (01...12)
- U
- week nummer van jaar met zondag als eerste dag van de week (00..53)
- w
- dag van de week (0..6)
- W
- week nummer van jaar met maandag als eerste dag van de week (00..53)
- x
- locale datum voorstelling (mm/dd/jj)
- y
- de laatste twee cijfers van het jaar (00...99)
- Y
- jaar (1970...)
- %b
- De hoeveelheid schijfruimte gebruikt voor dit bestand in 512-byte blokken. Omdat schijfruimte wordt toegewezen in veelvouden van de grootte van bestandssysteem blokken is deze normaliter groter dan %s/512, maar het kan ook kleiner zijn als het een ijl bestand is.
- %Bk
- File's birth time, i.e., its creation time, in the format specified by k, which is the same as for %A. This directive produces an empty string if the underlying operating system or filesystem does not support birth times.
- %c
- Laatste toegangstijd van het bestand in formaat zoals teruggegeven door de C ctime(3) functie.
- %Ck
- Bestand laatste status veranderingstijd in de vorm opgegeven door k, wat hetzelfde is als voor %A.
- %d
- Diepte van het bestand in de mappen boom; 0 betekend dat het bestand een begin punt is.
- %D
- The device number on which the file exists (the st_dev field of struct stat), in decimal.
- %f
- Toon de basisnaam; de bestandsnaam met enige voorafgaand mappen verwijderd (alleen het laatste element). Voor /, is het resultaat `/'. Zie de VOORBEELDEN sectie voor een voorbeeld..
- %F
- Soort bestandsysteem waar het bestand op staat; deze waarde kan gebruikt worden voor -fstype.
- %g
- Groep naam van bestand, of numerieke groep ID als de groep geen naam heeft.
- %G
- Numerieke groep ID van bestand.
- %h
- Mapnaam; Voorafgaande mappen van bestandsnaam (alle behalve het laatste deel).
- %H
- Opdrachtregel-argument waaronder het bestand gevonden werd.
- %i
- inode nummer van het bestand (decimaal).
- %k
- De grootte van schrijfruimte gebruikt voor dit bestand in 1 KB blokken. Omdat schrijfruimte toegewezen wordt in meervouden van de de bestandssysteem blok grootte is deze meestal groter dan %s/1024, maar ze kan ook kleiner zijn als het bestand een ijl bestand is.
- %l
- Voorwerp van symbolische koppeling (lege string als bestand geen symbolische koppeling is).
- %m
- Rechten bits van het bestand (octaal).
- %M
- Rechten van het bestand (in symbolische vorm, zoals voor ls). Dit directief wordt ondersteund vanaf findutils 4.2.5.
- %n
- Aantal harde koppelingen voor bestand.
- %p
- Naam van bestand.
- %P
- Naam van bestand met de naam van het startpunt waaronder het gevonden werd verwijderd.
- %s
- Grootte van bestand in bytes.
- %S
- IJlheid van het bestand.
- %t
- Laatste aanpassings tijd van bestand in de vorm teruggegeven door de C ctime(3) functie.
- %Tk
- Laatste aanpassings tijd van bestand in de vorm opgegeven door k, wat hetzelfde is als voor %A.
- %u
- Gebruiker naam van bestand, of numerieke gebruiker ID als de gebruiker geen naam heeft.
- %U
- Numerieke gebruiker ID van bestand.
- %y
- Bestandstype (zoals in ls -l), U=onbekend type (zou niet moeten voorkomen)
- %Y
- File's type (like %y), plus follow symbolic links: `L'=loop, `N'=nonexistent, `?' for any other error when determining the type of the target of a symbolic link.
- %Z
- (alleen SELinux) veiligheids context van het bestand.
- %{ %[ %(
- Gereserveerd voor toekomstig gebruik.
A `%' character followed by any other character is discarded, but the other character is printed (don't rely on this, as further format characters may be introduced). A `%' at the end of the format argument causes undefined behaviour since there is no following character. In some locales, it may hide your door keys, while in others it may remove the final page from the novel you are reading.
The %m and %d directives support the #, 0 and + flags, but the other directives do not, even if they print numbers. Numeric directives that do not support these flags include G, U, b, D, k and n. The `-' format flag is supported and changes the alignment of a field from right-justified (which is the default) to left-justified.
Zie de ONGEBRUIKELIJKE BESTANDSNAMEN sectie voor informatie over hoe ongebruikelijke tekens in bestandsnamen worden afgehandeld.
- -prune
- 'Waar'; als het bestand een map is, daal er dan niet in af. Als
-depth werd opgegeven, dan heeft -prune geen effect. Omdat
-delete -depth impliceert, is het gebruik van -prune
en -delete samen, niet nuttig. Om bijvoorbeeld de map
src/emacs en alle bestanden en mappen daaronder over te slaan , en
de namen van de gevonden bestanden te tonen, gebruikt u bij voorbeeld:
find . -path ./src/emacs -prune -o -print
- -quit
- Exit immediately (with return value zero if no errors have occurred). This
is different to -prune because -prune only applies to the
contents of pruned directories, while -quit simply makes
find stop immediately. No child processes will be left running. Any
command lines which have been built by -exec ... + or
-execdir ... + are invoked before the program is
exited. After -quit is executed, no more files specified on the
command line will be processed. For example,
`find /tmp/foo /tmp/bar -print -quit`
will print only `/tmp/foo`.
One common use of -quit is to stop searching the file system once we have found what we want. For example, if we want to find just a single file we can do this:
find / -name needle -print -quit
OPERATOREN¶
Gegeven in volgorde van aflopende voorrang:
- ( expr )
- Dwing volgorde af. Omdat haakjes speciaal zijn voor de shell, moeten ze normaliter tussen aanhalingstekens staan. Veel van de voorbeelden in deze handleiding gebruiken backslashes voor dit doel: `\(...\)' in plaats van `(...)'.
- ! expr
- Waar als expr ongeldig is. Dit teken dient ook beschermd te worden voor interpretatie door de shell.
- -not expr
- Hetzelfde als ! expr, maar voldoet niet aan POSIX.
- expr1 expr2
- Twee expressies in een rij worden samengevoegd met een impliciete -a; expr2 wordt niet beoordeeld als expr1 `fout' is.
- expr1 -a expr2
- Zelfde als expr1 expr2.
- expr1 -and expr2
- Hetzelfde als expr1 expr2, maar voldoet niet aan POSIX.
- expr1 -o expr2
- Of; expr2 wordt niet beoordeeld als expr1 `waar' is.
- expr1 -or expr2
- Zelfde als expr1 -o expr2.
- expr1 , expr2
- Lijst; beide expr1 en expr2 worden altijd beoordeeld. De waarde van expr1 wordt genegeerd; de waarde van de lijst is de waarde van expr2. De komma operator kan nuttig zijn voor het zoeken naar diverse verschillende type dingen terwijl het bestandssysteem maar een keer doorlopen wordt. De -fprintf actie kan worden gebruikt om de diverse gevonden items in verschillende uitvoer bestanden te noemen.
Please note that -a when specified implicitly (for example by two tests appearing without an explicit operator between them) or explicitly has higher precedence than -o. This means that find . -name afile -o -name bfile -print will never print afile.
ONGEBRUIKELIJKE BESTANDSNAMEN¶
Many of the actions of find result in the printing of data which is under the control of other users. This includes file names, sizes, modification times and so forth. File names are a potential problem since they can contain any character except `\0' and `/'. Unusual characters in file names can do unexpected and often undesirable things to your terminal (for example, changing the settings of your function keys on some terminals). Unusual characters are handled differently by various actions, as described below.
- -print0, -fprint0
- Always print the exact filename, unchanged, even if the output is going to a terminal.
- -ls, -fls
- Unusual characters are always escaped. White space, backslash, and double quote characters are printed using C-style escaping (for example `\f', `\"'). Other unusual characters are printed using an octal escape. Other printable characters (for -ls and -fls these are the characters between octal 041 and 0176) are printed as-is.
- -printf, -fprintf
- If the output is not going to a terminal, it is printed as-is. Otherwise, the result depends on which directive is in use. The directives %D, %F, %g, %G, %H, %Y, and %y expand to values which are not under control of files' owners, and so are printed as-is. The directives %a, %b, %c, %d, %i, %k, %m, %M, %n, %s, %t, %u and %U have values which are under the control of files' owners but which cannot be used to send arbitrary data to the terminal, and so these are printed as-is. The directives %f, %h, %l, %p and %P are quoted. This quoting is performed in the same way as for GNU ls. This is not the same quoting mechanism as the one used for -ls and -fls. If you are able to decide what format to use for the output of find then it is normally better to use `\0' as a terminator than to use newline, as file names can contain white space and newline characters. The setting of the LC_CTYPE environment variable is used to determine which characters need to be quoted.
- -print, -fprint
- Quoting is handled in the same way as for -printf and -fprintf. If you are using find in a script or in a situation where the matched files might have arbitrary names, you should consider using -print0 instead of -print.
The -ok and -okdir actions print the current filename as-is. This may change in a future release.
VOLDOET AAN¶
For closest compliance to the POSIX standard, you should set the POSIXLY_CORRECT environment variable. The following options are specified in the POSIX standard (IEEE Std 1003.1-2008, 2016 Edition):
- -H
- This option is supported.
- -L
- This option is supported.
- -name
- This option is supported, but POSIX conformance depends on the POSIX conformance of the system's fnmatch(3) library function. As of findutils-4.2.2, shell metacharacters (`*', `?' or `[]' for example) match a leading `.', because IEEE PASC interpretation 126 requires this. This is a change from previous versions of findutils.
- -type
- Supported. POSIX specifies `b', `c', `d', `l', `p', `f' and `s'. GNU find also supports `D', representing a Door, where the OS provides these. Furthermore, GNU find allows multiple types to be specified at once in a comma-separated list.
- -ok
- Supported. Interpretation of the response is according to the `yes' and `no' patterns selected by setting the LC_MESSAGES environment variable. When the POSIXLY_CORRECT environment variable is set, these patterns are taken system's definition of a positive (yes) or negative (no) response. See the system's documentation for nl_langinfo(3), in particular YESEXPR and NOEXPR. When POSIXLY_CORRECT is not set, the patterns are instead taken from find's own message catalogue.
- -newer
- Ondersteund. Als het opgegeven bestand een symbolische koppeling is, wordt deze altijd gevolgd. Dit is een verandering vergeleken met het voorgaande gedrag, die de relevante tijd van de symbolische koppeling haalde; zie GESCHIEDENIS hieronder.
- -perm
- Supported. If the POSIXLY_CORRECT environment variable is not set, some mode arguments (for example +a+x) which are not valid in POSIX are supported for backward-compatibility.
- Other primaries
- The primaries -atime, -ctime, -depth, -exec, -group, -links, -mtime, -nogroup, -nouser, -ok, -path, -print, -prune, -size, -user and -xdev are all supported.
The POSIX standard specifies parentheses `(', `)', negation `!' and the logical AND/OR operators -a and -o.
All other options, predicates, expressions and so forth are extensions beyond the POSIX standard. Many of these extensions are not unique to GNU find, however.
The POSIX standard requires that find detects loops:
- The find utility shall detect infinite loops; that is, entering a previously visited directory that is an ancestor of the last file encountered. When it detects an infinite loop, find shall write a diagnostic message to standard error and shall either recover its position in the hierarchy or terminate.
GNU find complies with these requirements. The link count of directories which contain entries which are hard links to an ancestor will often be lower than they otherwise should be. This can mean that GNU find will sometimes optimise away the visiting of a subdirectory which is actually a link to an ancestor. Since find does not actually enter such a subdirectory, it is allowed to avoid emitting a diagnostic message. Although this behaviour may be somewhat confusing, it is unlikely that anybody actually depends on this behaviour. If the leaf optimisation has been turned off with -noleaf, the directory entry will always be examined and the diagnostic message will be issued where it is appropriate. Symbolic links cannot be used to create filesystem cycles as such, but if the -L option or the -follow option is in use, a diagnostic message is issued when find encounters a loop of symbolic links. As with loops containing hard links, the leaf optimisation will often mean that find knows that it doesn't need to call stat() or chdir() on the symbolic link, so this diagnostic is frequently not necessary.
The -d option is supported for compatibility with various BSD systems, but you should use the POSIX-compliant option -depth instead.
De POSIXLY_CORRECT omgevingsvariabele beïnvloed het gedrag van de -regex of -iregex testen niet, omdat deze testen niet gespecificeerd zijn in de POSIX standard.
OMGEVINGSVARIABELEN¶
- LANG
- Voorziet een standaard waarde voor de internationalisatie variabelen die werden uitgeschakeld of null.
- LC_ALL
- If set to a non-empty string value, override the values of all the other internationalization variables.
- LC_COLLATE
- The POSIX standard specifies that this variable affects the pattern matching to be used for the -name option. GNU find uses the fnmatch(3) library function, and so support for LC_COLLATE depends on the system library. This variable also affects the interpretation of the response to -ok; while the LC_MESSAGES variable selects the actual pattern used to interpret the response to -ok, the interpretation of any bracket expressions in the pattern will be affected by LC_COLLATE.
- LC_CTYPE
- This variable affects the treatment of character classes used in regular expressions and also with the -name test, if the system's fnmatch(3) library function supports this. This variable also affects the interpretation of any character classes in the regular expressions used to interpret the response to the prompt issued by -ok. The LC_CTYPE environment variable will also affect which characters are considered to be unprintable when filenames are printed; see the section UNUSUAL FILENAMES.
- LC_MESSAGES
- Bepaald het taalgebied dat gebruikt wordt voor geïnternationaliseerde berichten. Indien de POSIXLY_CORRECT omgevingsvariabele is gezet, dan bepaald deze ook de interpretatie van het antwoord op de prompt, veroorzaakt door de -ok actie.
- NLSPATH
- Bepaald de locatie van de internationale berichten catalogi.
- PATH
- Beïnvloed de mappen die worden doorzocht om de uitvoerbare bestanden te vinden die aangeroepen worden door -exec, -execdir, -ok en -okdir.
- POSIXLY_CORRECT
- Bepaald de blok grootte gebruikt door -ls en -fls. Als POSIXLY_CORRECT werd gezet, dan is de eenheid 512 bytes. Anders zijn het eenheden van 1024 bytes.
- Setting this variable also turns off warning messages (that is, implies -nowarn) by default, because POSIX requires that apart from the output for -ok, all messages printed on stderr are diagnostics and must result in a non-zero exit status.
- Als POSIXLY_CORRECT niet gezet werd dan wordt -perm +zzz precies zo behandeld als -perm /zzz mits +zzz geen geldige symbolische mode is. Indien POSIXLY_CORRECT is gezet, dan worden deze constructies behandeld als een fout.
- Als POSIXLY_CORRECT werd gezet, dan wordt de respons gemaakt door de -ok actie, geïnterpreteerd conform de berichten catalogus van het systeem, in tegenstelling tot de eigen berichten vertalingen van find.
- TZ
- Affects the time zone used for some of the time-related format directives of -printf and -fprintf.
VOORBEELDEN¶
Simple `find|xargs` approach¶
- •
- Find files named core in or below the directory /tmp and
delete them.
Note that this will work incorrectly if there are any filenames containing newlines, single or double quotes, or spaces.
$ find /tmp -name core -type f -print | xargs /bin/rm -f
Safer `find -print0 | xargs -0` approach¶
- •
- Find files named core in or below the directory /tmp and
delete them, processing filenames in such a way that file or directory
names containing single or double quotes, spaces or newlines are correctly
handled.
The -name test comes before the -type test in order to avoid having to call stat(2) on every file.
$ find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
Note that there is still a race between the time find traverses the hierarchy printing the matching filenames, and the time the process executed by xargs works with that file.
Processing arbitrary starting points¶
- •
- Given that another program proggy pre-filters and creates a huge
NUL-separated list of files, process those as starting points, and find
all regular, empty files among them:
The use of `-files0-from -` means to read the names of the starting points from standard input, i.e., from the pipe; and -maxdepth 0 ensures that only explicitly those entries are examined without recursing into directories (in the case one of the starting points is one).
$ proggy | find -files0-from - -maxdepth 0 -type f -empty
Executing a command for each file¶
- •
- Run file on every file in or below the current directory.
Notice that the braces are enclosed in single quote marks to protect them from interpretation as shell script punctuation. The semicolon is similarly protected by the use of a backslash, though single quotes could have been used in that case also.
$ find . -type f -exec file '{}' \;
In veel gevallen, zou men `-exec ... +` prefereren of nog beter `-execdir ... +` syntax vanwege prestatie en veiligheid redenen.
Traversing the filesystem just once - for 2 different actions¶
- •
- Traverse the filesystem just once, listing set-user-ID files and
directories into /root/suid.txt and large files into
/root/big.txt.
This example uses the line-continuation character '\' on the first two lines to instruct the shell to continue reading the command on the next line.
$ find / \
\( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) , \
\( -size +100M -fprintf /root/big.txt '%-10s %p\n' \)
Searching files by age¶
- •
- Search for files in your home directory which have been modified in the
last twenty-four hours.
This command works this way because the time since each file was last modified is divided by 24 hours and any remainder is discarded. That means that to match -mtime 0, a file will have to have a modification in the past which is less than 24 hours ago.
$ find $HOME -mtime 0
Searching files by permissions¶
- •
- Search for files which are executable but not readable.
$ find /sbin /usr/sbin -executable \! -readable -print
- •
- Search for files which have read and write permission for their owner, and
group, but which other users can read but not write to.
Files which meet these criteria but have other permissions bits set (for example if someone can execute the file) will not be matched.
$ find . -perm 664
- •
- Search for files which have read and write permission for their owner and
group, and which other users can read, without regard to the presence of
any extra permission bits (for example the executable bit).
This will match a file which has mode 0777, for example.
$ find . -perm -664
- •
- Search for files which are writable by somebody (their owner, or their
group, or anybody else).
$ find . -perm /222
- •
- Search for files which are writable by either their owner or their group.
All three of these commands do the same thing, but the first one uses the octal representation of the file mode, and the other two use the symbolic form. The files don't have to be writable by both the owner and group to be matched; either will do.
$ find . -perm /220 $ find . -perm /u+w,g+w $ find . -perm /u=w,g=w
- •
- Search for files which are writable by both their owner and their group.
Beide commando´s doen hetzelfde.
$ find . -perm -220 $ find . -perm -g+w,u+w
- •
- A more elaborate search on permissions.
These two commands both search for files that are readable for everybody (-perm -444 or -perm -a+r), have at least one write bit set (-perm /222 or -perm /a+w) but are not executable for anybody (! -perm /111 or ! -perm /a+x respectively).
$ find . -perm -444 -perm /222 \! -perm /111 $ find . -perm -a+r -perm /a+w \! -perm /a+x
Pruning - omitting files and subdirectories¶
- •
- Copy the contents of /source-dir to /dest-dir, but omit
files and directories named .snapshot (and anything in them). It
also omits files or directories whose name ends in `~', but not their
contents.
The construct -prune -o \( ... -print0 \) is quite common. The idea here is that the expression before -prune matches things which are to be pruned. However, the -prune action itself returns true, so the following -o ensures that the right hand side is evaluated only for those directories which didn't get pruned (the contents of the pruned directories are not even visited, so their contents are irrelevant). The expression on the right hand side of the -o is in parentheses only for clarity. It emphasises that the -print0 action takes place only for things that didn't have -prune applied to them. Because the default `and' condition between tests binds more tightly than -o, this is the default anyway, but the parentheses help to show what is going on.
$ cd /source-dir $ find . -name .snapshot -prune -o \( \! -name '*~' -print0 \) \
| cpio -pmd0 /dest-dir
- •
- Gegeven de volgende map van projecten en hun geassocieerde SCM
administratieve mappen, doorzoek op een efficiënte manier de
hoofdmappen:
Voorbeeld uitvoer:
$ find repo/ \
\( -exec test -d '{}/.svn' \; \ -or -exec test -d '{}/.git' \; \ -or -exec test -d '{}/CVS' \; \ \) -print -prune
In dit voorbeeld, voorkomt -prune het onnodige afdalen in mappen die al ontdekt werden (bij voorbeeld wordt project3/src niet doorzocht omdat we project3/.svn) reeds gevonden werd), maar verzekert wel dat naast gelegen mappen (project2 en project3 gevonden worden.
repo/project1/CVS repo/gnu/project2/.svn repo/gnu/project3/.svn repo/gnu/project3/src/.svn repo/project4/.git
Andere bruikbare voorbeelden¶
- •
- Zoek voor diverse bestandstypen
Search for files, directories, and symbolic links in the directory /tmp passing these types as a comma-separated list (GNU extension), which is otherwise equivalent to the longer, yet more portable:
$ find /tmp -type f,d,l
$ find /tmp \( -type f -o -type d -o -type l \)
- •
- Search for files with the particular name needle and stop
immediately when we find the first one.
$ find / -name needle -print -quit
- •
- Demonstrate the interpretation of the %f and %h format
directives of the -printf action for some corner-cases. Here is an
example including some output.
$ find . .. / /tmp /tmp/TRACE compile compile/64/tests/find -maxdepth 0 -printf '[%h][%f]\n' [.][.] [.][..] [][/] [][tmp] [/tmp][TRACE] [.][compile] [compile/64/tests][find]
EIND WAARDE¶
find exits with status 0 if all files are processed successfully, greater than 0 if errors occur. This is deliberately a very broad description, but if the return value is non-zero, you should not rely on the correctness of the results of find.
When some error occurs, find may stop immediately, without completing all the actions specified. For example, some starting points may not have been examined or some pending program invocations for -exec ... {} + or -execdir ... {} + may not have been performed.
GESCHIEDENIS¶
As of findutils-4.2.2, shell metacharacters (`*', `?' or `[]' for example) used in filename patterns match a leading `.', because IEEE POSIX interpretation 126 requires this.
As of findutils-4.3.3, -perm /000 now matches all files instead of none.
Nanosecond-resolution timestamps were implemented in findutils-4.3.3.
As of findutils-4.3.11, the -delete action sets find's exit status to a nonzero value when it fails. However, find will not exit immediately. Previously, find's exit status was unaffected by the failure of -delete.
Feature | Added in | Also occurs in |
-files0-from | 4.9.0 | |
-newerXY | 4.3.3 | BSD |
-D | 4.3.1 | |
-O | 4.3.1 | |
-readable | 4.3.0 | |
-writable | 4.3.0 | |
-executable | 4.3.0 | |
-regextype | 4.2.24 | |
-exec ... + | 4.2.12 | POSIX |
-execdir | 4.2.12 | BSD |
-okdir | 4.2.12 | |
-samefile | 4.2.11 | |
-H | 4.2.5 | POSIX |
-L | 4.2.5 | POSIX |
-P | 4.2.5 | BSD |
-delete | 4.2.3 | |
-quit | 4.2.3 | |
-d | 4.2.3 | BSD |
-wholename | 4.2.0 | |
-iwholename | 4.2.0 | |
-ignore_readdir_race | 4.2.0 | |
-fls | 4.0 | |
-ilname | 3.8 | |
-iname | 3.8 | |
-ipath | 3.8 | |
-iregex | 3.8 |
The syntax -perm +MODE was removed in findutils-4.5.12, in favour of -perm /MODE. The +MODE syntax had been deprecated since findutils-4.2.21 which was released in 2005.
NON-BUGS¶
Operator precedence surprises¶
Het commando find . -name afile -o -name bfile -print zal nooit afile tonen omdat dit eigenlijk equivalent is aan find . -name afile -o \( -name bfile -a -print \). Merk op dat de prioriteit van -a hoger is dan die van -o en indien geen operator werd opgegeven tussen de testen, -a wordt aangenomen.
“paden moeten de expressie vooraf gaan” fout melding¶
$ find . -name *.c -print find: paden moeten aan de expressie vooraf gaan find: mogelijk een patroon zonder aanhalingstekens na het predicaat `-name'?
This happens when the shell could expand the pattern *.c to more than one file name existing in the current directory, and passing the resulting file names in the command line to find like this:
find . -name frcode.c locate.c word_io.c -print
That command is of course not going to work, because the -name predicate allows exactly only one pattern as argument. Instead of doing things this way, you should enclose the pattern in quotes or escape the wildcard, thus allowing find to use the pattern with the wildcard during the search for file name matching instead of file names expanded by the parent shell:
$ find . -name '*.c' -print $ find . -name \*.c -print
BUGS¶
Er bestaan veiligheidsproblemen die inherent zijn aan het gedrag dat de POSIX standaard specificeert voor find, en die daarom ook niet opgelost kunnen worden. Bij voorbeeld is de -exec actie inherent onveilig en daarom zou steeds -execdir gebruikt moeten worden.
De omgevingsvariabele LC_COLLATE heeft geen effect op de -ok actie.
RAPPORTEREN VAN BUGS¶
Online hulp bij GNU findutils:
<https://www.gnu.org/software/findutils/#get-help>
Meld alle vertaalfouten op
<https://translationproject.org/team/nl.html>
Rapporteer enig ander onderwerp via het formulier op de GNU Savannah bug site.
Algemene onderwerpen over het GNU findutils pakket worden bediscussieerd op de bug-findutils mail lijst.COPYRIGHT¶
Copyright © 1990-2022 Free Software Foundation, Inc.
Licentie GPLv3+: GNU GPL versie 3 of later
<https://gnu.org/licenses/gpl.html>.
Dit is vrije software: u mag het vrijelijk wijzigen en verder verspreiden.
Deze software kent GEEN GARANTIE, voor zover de wet dit toestaat.
ZIE OOK¶
chmod(1), locate(1), ls(1), updatedb(1), xargs(1), lstat(2), stat(2), ctime(3) fnmatch(3), printf(3), strftime(3), locatedb(5), regex(7)
Volledige documentatie:
<https://www.gnu.org/software/findutils/find>
of lokaal beschikbaar via: info find
VERTALING¶
De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema <joshb@xs4all.nl>, Mario Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>
Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.
Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-dutch@lists.debian.org.