Find: Skillnad mellan sidversioner
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
||
Rad 66: | Rad 66: | ||
- noleaf . Om du senare använder alternativet -P , kommer -noleaf att göra det fortfarande vara i kraft. | - noleaf . Om du senare använder alternativet -P , kommer -noleaf att göra det fortfarande vara i kraft. | ||
Om -L är i kraft och hitta upptäcker | Om -L är i kraft och hitta upptäcker | ||
en symbolisk länk till en underkatalog under dess sökning, den underkatalog som pekas på av den symboliska länken kommer att vara letade. | |||
När alternativet -L är aktivt kommer predikatet -type att göra det | När alternativet -L är aktivt kommer predikatet -type att göra det | ||
Rad 288: | Rad 286: | ||
inte specificerat vilka, om några, varningar som kommer att vara aktiva. | inte specificerat vilka, om några, varningar som kommer att vara aktiva. | ||
== GLOBALA ALTERNATIV == | |||
Globala alternativ returnerar alltid sant. Globala alternativ träder i kraft | Globala alternativ returnerar alltid sant. Globala alternativ träder i kraft | ||
även för tester som inträffar tidigare på kommandoraden. Till | även för tester som inträffar tidigare på kommandoraden. Till förhindra förvirring bör globala alternativ anges på | ||
kommandoraden efter listan med startpunkter, strax före första testet, positionsalternativet eller åtgärden. Om du anger en global | |||
kommandoraden efter listan med startpunkter, strax före | |||
alternativet på någon annan plats, kommer find att utfärda ett varningsmeddelande | alternativet på någon annan plats, kommer find att utfärda ett varningsmeddelande | ||
förklara att detta kan vara förvirrande. | förklara att detta kan vara förvirrande. | ||
De globala alternativen visas efter listan med startpunkter och så | De globala alternativen visas efter listan med startpunkter och så är inte samma typ av alternativ som -L , till exempel. | ||
-d En synonym för -djup, för kompatibilitet med FreeBSD, | -d En synonym för -djup, för kompatibilitet med FreeBSD, | ||
Rad 354: | Rad 349: | ||
findutils släpper till släpp. | findutils släpper till släpp. | ||
- | -help,--help | ||
Skriv ut en sammanfattning av kommandoradens användning av hitta och | Skriv ut en sammanfattning av kommandoradens användning av hitta och | ||
utgång. | utgång. | ||
Rad 418: | Rad 413: | ||
-xdev Gå inte ner i kataloger på andra filsystem. | -xdev Gå inte ner i kataloger på andra filsystem. | ||
== TEST == | |||
Vissa tester, till exempel -newerXY och -samefile , tillåter jämförelse mellan den akt som för närvarande granskas och någon referensfil anges på kommandoraden. När dessa tester används,tolkningen av referensfilen bestäms av alternativen -H , -L och -P och alla tidigare -följer , men referensfilen är endast undersökt en gång, vid den tidpunkt då kommandoraden tolkas. Om referensfilen kan inte granskas (till exempel misslyckas stat(2) | |||
-systemanropet för den), ett felmeddelande utfärdas och hitta | -systemanropet för den), ett felmeddelande utfärdas och hitta | ||
avslutas med en status som inte är noll. | avslutas med en status som inte är noll. | ||
Rad 444: | Rad 433: | ||
minuter sedan. | minuter sedan. | ||
- | -anewer referens | ||
Tidpunkten för den senaste åtkomsten av den aktuella filen är nyare | Tidpunkten för den senaste åtkomsten av den aktuella filen är nyare | ||
än den för den senaste dataändringen av referensfilen | än den för den senaste dataändringen av referensfilen | ||
Rad 451: | Rad 440: | ||
dataändring av filen den pekar på används alltid. | dataändring av filen den pekar på används alltid. | ||
- | -atime n | ||
Filen användes senast mindre än, mer än eller exakt | Filen användes senast mindre än, mer än eller exakt | ||
n *24 timmar sedan. När hitta räknar ut hur många 24-timmars | n *24 timmar sedan. När hitta räknar ut hur många 24-timmars | ||
Rad 478: | Rad 467: | ||
-empty Filen är tom och är antingen en vanlig fil eller en katalog. | -empty Filen är tom och är antingen en vanlig fil eller en katalog. | ||
-executable | |||
Matchar filer som är körbara och kataloger som är sökbara (i filnamnsupplösning) av nuvarande användaren. Detta tar hänsyn till | |||
åtkomstkontroll listor och andra behörighetsartefakter som -perm testar ignorerar. Detta test använder sig av access(2) -systemet | |||
anrop, och kan därför luras av NFS-servrar som använder UID | |||
mappning (eller root-squashing), eftersom många system implementerar | |||
access(2) i klientens kärna och kan därför inte använda | |||
UID-mappningsinformationen som finns på servern. Därför att | |||
detta test baseras endast på resultatet av åtkomsten (2) | |||
systemanrop finns det ingen garanti för att en fil som | |||
det här testet lyckas kan faktiskt utföras. | |||
-false Alltid falskt. | |||
-fstype typ | |||
Filen är på ett filsystem av typen . Den giltiga | Filen är på ett filsystem av typen . Den giltiga | ||
filsystemtyper varierar mellan olika versioner av Unix; en | filsystemtyper varierar mellan olika versioner av Unix; en | ||
Rad 514: | Rad 500: | ||
-iname mönster | -iname mönster | ||
Som -name , men matchningen är skiftlägesokänslig. För | Som -name , men matchningen är skiftlägesokänslig. För till exempel mönstren 'fo*' och 'F??' matcha filnamnen | ||
`Foo', `FOO', `foo', `fOo', etc. Mönstret `*foo*` kommer att matchar även en fil som heter '.foobar'. | |||
`Foo', `FOO', `foo', `fOo', etc. Mönstret `*foo*` kommer att | |||
-inum n | -inum n | ||
Rad 539: | Rad 523: | ||
-lname mönster | -lname mönster | ||
Fil är en symbolisk länk vars innehåll matchar skalmönster | Fil är en symbolisk länk vars innehåll matchar skalmönster | ||
mönster . Metatecken behandlar inte `/' eller `.' | mönster . Metatecken behandlar inte `/' eller `.' speciellt. Om alternativet -L eller -följ är in | ||
effekt, returnerar detta test falskt om inte den symboliska länken är bruten. | |||
effekt, returnerar detta test falskt om inte den symboliska länken | |||
-mmin n | -mmin n | ||
Filens data ändrades senast mindre än, mer än eller | Filens data ändrades senast mindre än, mer än eller exakt n minuter sedan. | ||
-mtid n | -mtid n | ||
Rad 554: | Rad 535: | ||
ändringstider. | ändringstider. | ||
-name pattern | |||
Filnamnets bas (sökvägen med de ledande katalogerna | Filnamnets bas (sökvägen med de ledande katalogerna | ||
bort) matchar skalmönster . Eftersom den | bort) matchar skalmönster . Eftersom den |
Versionen från 17 oktober 2023 kl. 12.17
FIND Handbok för allmänna kommandon FIND(1)
NAMN
find - sök efter filer i en kataloghierarki
SYNOPSIS
hitta [-H] [-L] [-P] [-D debugopts] [-Olevel] [startpunkt...] [uttryck]
BESKRIVNING
Denna manualsida dokumenterar GNU-versionen av find . GNU hitta söker i katalogträdet som är rotat vid varje given startpunkt genom att utvärdera det givna uttrycket från vänster till höger, enligt till företrädesreglerna (se avsnitt OPERATÖRER), tills den resultatet är känt (vänster sida är falsk för och operationer, sant för eller ), vid vilken punkt sökningen går vidare till nästa filnamn. Om ingen startpunkt anges, `.' är antaget.
Om du använder hitta i en miljö där säkerheten är viktigt (till exempel om du använder det för att söka i kataloger som är skrivbara av andra användare), bör du läsa avsnittet `Säkerhet Övervägandens kapitel i findutils-dokumentationen, som är kallas Finding Files och kommer med findutils. Det dokumentet innehåller också mycket mer detaljer och diskussion än denna manual sida, så du kanske tycker att den är en mer användbar informationskälla.
ALTERNATIV
Alternativen -H , -L och -P styr behandlingen av symboliska länkar. Kommandoradsargument efter dessa anses vara namn på filer eller kataloger som ska undersökas, upp till den första argument som börjar med `-', eller argumentet `(' eller `!'. Det argument och alla följande argument anses vara uttryck som beskriver vad som ska sökas efter. Om inga stigar ges, används den aktuella katalogen. Om inget uttryck ärgivet , används uttrycket -print (men du borde förmodligen överväg att använda -print0 istället, ändå).
Den här manualsidan talar om `alternativ' i uttrycket lista. Dessa alternativ styr beteendet för hitta men är anges omedelbart efter det sista sökvägsnamnet. De fem "riktiga" alternativen -H , -L , -P , -D och -O måste visas före den första sökvägen namn, om alls. Ett dubbelstreck -- skulle teoretiskt kunna användas till signalera att eventuella kvarvarande argument inte är alternativ, utan detta fungerar inte riktigt på grund av hur hitta bestämmer slutet på följande vägargument: den gör det genom att läsa tills en uttrycksargument kommer (som också börjar med en `-'). Nu, om ett sökvägsargument skulle börja med ett "-", så skulle find behandla det som uttrycksargument istället. Således för att säkerställa att alla startpunkter tas som sådana, och särskilt för att förhindra det jokerteckenmönster utökade av det anropande skalet är det inte felaktigt behandlas som uttrycksargument är det i allmänhet säkrare för att prefixa jokertecken eller tvivelaktiga sökvägsnamn med antingen `./' eller till använd absoluta sökvägsnamn som börjar med '/'. Alternativt är det i allmänhet säker men icke-portabel att använda GNU-alternativet -filer0-från för att passera godtyckliga startpunkter för att hitta .
-P Följ aldrig symboliska länkar. Detta är standard beteende. När hitta undersöker eller skriver ut information om filer, och filen är en symbolisk länk, informationen som används ska hämtas från det symboliskas egenskaper länken själv.
-L Följ symboliska länkar. När hitta undersöker eller utskrifter information om filer ska den information som används vara hämtat från egenskaperna för filen som länken till poäng, inte från själva länken (såvida den inte är trasig symbolisk länk eller hitta kan inte granska filen till som länken pekar på). Användning av detta alternativ innebär - noleaf . Om du senare använder alternativet -P , kommer -noleaf att göra det fortfarande vara i kraft. Om -L är i kraft och hitta upptäcker en symbolisk länk till en underkatalog under dess sökning, den underkatalog som pekas på av den symboliska länken kommer att vara letade.
När alternativet -L är aktivt kommer predikatet -type att göra det alltid matcha mot den typ av fil som en symbolisk länken pekar på snarare än själva länken (om inte symbolisk länk är bruten). Handlingar som kan orsaka symboliska länkar som bryts medan find körs (för exempel -delete ) kan ge upphov till förvirrande beteende. Att använda -L gör att -lname och -ilname predikaten alltid att returnera falskt.
-H Följ inte symboliska länkar, förutom när du bearbetar kommandoradsargument. När hitta undersöker eller utskrifter information om filer ska den information som används vara hämtat från egenskaperna hos själva den symboliska länken. Det enda undantaget från detta beteende är när en fil som anges på kommandoraden är en symbolisk länk, och länk kan lösas. För den situationen, informationen som används är hämtat från vad länken än pekar på (det vill säga, länken följs). Informationen om länken sig själv används som en reserv om filen pekas på av symbolisk länk kan inte undersökas. Om -H är i kraft och en av sökvägarna som anges på kommandoraden är a symbolisk länk till en katalog, innehållet i den katalogen kommer att undersökas (men naturligtvis -maxdepth 0 skulle förhindra detta).
Om mer än en av -H , -L och -P anges, åsidosätter var och en de andra; den sista som visas på kommandoraden tar effekt. Eftersom det är standard, bör alternativet -P vara anses vara i kraft om inte antingen -H eller -L anges.
GNU find ofta statistikfiler under bearbetningen av kommandoraden innan någon sökning har börjat. Dessa alternativen påverkar också hur dessa argument behandlas. Specifikt finns det ett antal tester som jämför filer listad på kommandoraden mot en fil vi är för närvarande med tanke på. I varje fall, filen som anges på kommandot linje kommer att ha undersökts och några av dess egenskaper kommer att ha blivit räddad. Om den namngivna filen i själva verket är en symbolisk länk, och alternativet -P är i kraft (eller om varken -H eller -L var det specificeras), kommer den information som används för jämförelsen att tas från egenskaperna hos den symboliska länken. Annars blir det hämtat från egenskaperna för filen som länken pekar på. Om find kan inte följa länken (till exempel för att den har otillräckliga privilegier eller länken pekar på en fil som inte finns) egenskaperna för själva länken kommer att användas.
När alternativen -H eller -L är aktiva, kan alla symboliska länkar listas som argumentet för -newer kommer att avreferens, och tidsstämpel kommer att tas från filen som den symboliska länken till poäng. Samma hänsyn gäller för -newerXY , -anewer och
-cnewer
Alternativet -follow har en liknande effekt som -L , även om det krävs effekt vid den punkt där den visas (det vill säga om -L inte används men -follow är alla symboliska länkar som visas efter -follow på kommandoraden kommer att avhänvisas, och de före det inte).
-D felsöker Skriv ut diagnostisk information; detta kan vara till hjälp diagnostisera problem med varför hitta inte gör vad du vilja. Listan över felsökningsalternativ ska vara komma separerat. Kompatibiliteten för felsökningsalternativen är inte garanteras mellan releaser av findutils. För en komplett lista över giltiga felsökningsalternativ, se utdata från find -D help . Giltiga felsökningsalternativ inkluderar
exec Visa diagnostisk information relaterad till -exec, -execdir, -ok och -okdir
opt Skriver ut diagnostisk information relaterad till optimering av uttrycksträdet; se -O alternativ.
rates Skriver ut en sammanfattning som anger hur ofta varje predikat lyckades eller misslyckades.
search Navigera utförligt i katalogträdet.
stat Skriv ut meddelanden som filer undersöks med stat och lstat -systemanropen. Sökprogrammet försöker minimera sådana samtal.
tree Visa uttrycksträdet i dess original och optimerad form.
all Aktivera alla andra felsökningsalternativ (men help ).
help Förklara felsökningsalternativen.
-Olevel Möjliggör frågeoptimering. Sökprogrammet ordnar om tester för att påskynda exekveringen samtidigt som helheten bevaras effekt; det vill säga predikat med biverkningar är det inte omordnade i förhållande till varandra. Optimeringarna utförda på varje optimeringsnivå är som följer.
0 Motsvarar optimeringsnivå 1.
1 Detta är standardoptimeringsnivån och motsvarar det traditionella beteendet. Uttrycken ordnas om så att endast tester baseras på namnen på filer (till exempel -name och -regex ) utförs först.
2 Alla -type- eller -xtype- tester utförs efter någon tester endast baserat på filnamnen, men tidigare alla tester som kräver information från inoden. På många moderna versioner av Unix finns filtyper returneras av readdir() och så är dessa predikat snabbare att utvärdera än predikat som behöver ange filen först. Om du använder -fstype FOO predikatet och anger ett filsystem typ FOO som är inte känd (det vill säga finns i `/etc/mtab') på tidfyndet börjar, det predikatet är ekvivalent till -falsk .
3 På denna optimeringsnivå är den fulla kostnadsbaserad frågeoptimeraren är aktiverad. Provordningen är modifierad så att billiga (dvs snabba) tester är utförs först och dyrare är utförs senare vid behov. Inom varje kostnad band, predikat utvärderas tidigare eller senare beroende på om de sannolikt kommer att lyckas eller inte. För -o , predikat som sannolikt gör det lyckas utvärderas tidigare, och för -a , predikat som sannolikt kommer att misslyckas utvärderas tidigare.
Den kostnadsbaserade optimeraren har en fast uppfattning om hur troligt det är varje givet test ska lyckas. I vissa fall sannolikhet tar hänsyn till den specifika karaktären av test (till exempel, -typ f antas vara mer sannolikt lyckas än -typ c ). Den kostnadsbaserade optimeraren är för närvarande utvärderas. Om det inte gör det faktiskt förbättra prestandan för find kommer den att tas bort igen. Omvänt, optimeringar som visar sig vara tillförlitliga, robust och effektiv kan aktiveras vid lägre optimering nivåer över tid. Men standardbeteendet (dvs optimeringsnivå 1) kommer inte att ändras i 4.3.x släppserie. Findutils testsvit kör alla testar på hitta på varje optimeringsnivå och säkerställer att resultatet är detsamma.
EXPRESSION
Den del av kommandoraden efter listan med startpunkter är uttrycket . _ Detta är en sorts frågespecifikation som beskriver hur vi matchar filer och vad vi gör med de filer som fanns matchade. Ett uttryck är sammansatt av en sekvens av saker:
Tester Tester returnerar ett sant eller falskt värde, vanligtvis på basen av någon egenskap hos en fil som vi överväger. Den -tomma test till exempel är sant endast när den aktuella filen är det tömma.
Handlingar Åtgärder har biverkningar (som att skriva ut något på standardutgången) och returnerar antingen sant eller falskt, vanligtvis baserat på om de är framgångsrika eller inte. De -print action till exempel skriver ut namnet på den aktuella fil på standardutgången.
Globala alternativ Globala alternativ påverkar driften av tester och åtgärder som anges på någon del av kommandoraden. Globala alternativ returnerar alltid sant. Alternativet -depth gör till exempel att hitta går igenom filsystemet i en djup-första ordning.
Positionsalternativ Positionsalternativ påverkar endast tester eller åtgärder som Följ dem. Positionsalternativ returnerar alltid sant. De -regextype- alternativet till exempel är positionellt, specificerande dialekten för reguljära uttryck för reguljära uttryck inträffar senare på kommandoraden.
Operatörer Operatörer sammanfogar de andra objekten inom uttryck. De inkluderar till exempel -o (som betyder logisk OR) och -a (betyder logiskt OCH). Där en operatör finns saknas, -a antas.
Åtgärden -print utförs på alla filer som helheten uttrycket är sant, såvida det inte innehåller en annan handling än -beskär eller -sluta . Åtgärder som förhindrar standard -print är -delete , -exec , -execdir , -ok , -okdir , -fls , -fprint , -fprintf , -ls , -print och -printf .
Åtgärden -delete fungerar också som ett alternativ (eftersom det innebär -depth ).
POSITIONELLA ALTERNATIV Positionsalternativ returnerar alltid sant. De påverkar bara tester inträffar senare på kommandoraden.
-dagens start Mät tider (för -amin , -atime , -cmin , -ctime , -mmin , och -mtime ) från dagens början snarare än från 24 timmar sedan. Det här alternativet påverkar bara tester som visas senare på kommandoraden.
-Följ Utfasad; använd alternativet -L istället. Referens symboliska länkar. Antyder -noleaf . Alternativet -följ _ påverkar endast de tester som visas efter det på kommandorad. Såvida inte alternativet -H eller -L har varitspecificerat, ändrar positionen för alternativet -follow beteendet hos predikatet -newer ; alla filer listade som argumentet -newer kommer att avreferens om de är det symboliska länkar. Samma hänsyn gäller för -newerXY , -newer och -cnewer . Likaså -typen predikatet kommer alltid att matcha filens typ som en symbolisk länk pekar på snarare än länken sig. Att använda -follow orsakar -lname och -ilname predikar alltid att returnera falskt.
-regextype typ Ändrar syntaxen för reguljära uttryck som förstås av -regex- och -iregex -test som inträffar senare på kommandoraden. För att se vilka reguljära uttryckstyper som är kända, använd -regextyp hjälp . Texinfo-dokumentationen (se SE ÄVEN ) förklarar innebörden av och skillnaderna mellan olika typer av reguljära uttryck.
-varna, -varna Slå på eller av varningsmeddelanden. Dessa varningar gäller endast till kommandoradens användning, inte till några villkor som find kan stöta på när den söker i kataloger. De standardbeteende motsvarar -warn if standard input är en tty, och att -nowarn annars. Om ett varningsmeddelande relaterade till kommandoradsanvändning produceras, exit status för fyndet påverkas inte. Om miljövariabeln POSIXLY_CORRECT är inställd och -warn också används, är den det inte specificerat vilka, om några, varningar som kommer att vara aktiva.
GLOBALA ALTERNATIV
Globala alternativ returnerar alltid sant. Globala alternativ träder i kraft även för tester som inträffar tidigare på kommandoraden. Till förhindra förvirring bör globala alternativ anges på kommandoraden efter listan med startpunkter, strax före första testet, positionsalternativet eller åtgärden. Om du anger en global alternativet på någon annan plats, kommer find att utfärda ett varningsmeddelande förklara att detta kan vara förvirrande.
De globala alternativen visas efter listan med startpunkter och så är inte samma typ av alternativ som -L , till exempel.
-d En synonym för -djup, för kompatibilitet med FreeBSD, NetBSD, MacOS X och OpenBSD.
-djup Bearbeta varje katalogs innehåll före katalogen sig. Åtgärden -delete innebär också -depth .
-files0-from file Läs startpunkterna från filen istället för att hämta dem på kommandoraden. I motsats till de kända begränsningarna att skicka startpunkter via argument på kommandot linje, nämligen begränsningen av mängden filnamn, och den inneboende tvetydigheten hos filnamn som krockar med alternativnamn, med detta alternativ kan du säkert skicka en godtyckligt antal startpunkter att hitta .
Genom att använda det här alternativet och skicka startpunkter på kommandoraden utesluter varandra och är det därför inte tillåtet samtidigt.
Filargumentet är obligatoriskt . Man kan använda -filer0-från - för att läsa listan med startpunkter från standardinmatningsströmmen , och t.ex. från ett rör. I denna fall, åtgärderna -ok och -okdir är inte tillåtna, eftersom de skulle uppenbarligen störa läsning från standardinmatning för att få en användarbekräftelse .
Startpunkterna i filen måste separeras med ASCII NUL-tecken. Två på varandra följande NUL-tecken, dvs startpunkt med ett noll-längd filnamn är inte tillåtet och kommer att leda till en feldiagnostik följt av en icke- Noll utgångskod senare.
Om den givna filen är tom, bearbetas inte find någon startpunkt och kommer därför att avslutas omedelbart efter att ha analyserat programargumenten. Detta är till skillnad från standardanrop där hitta antar strömmen katalog som startpunkt om inget sökvägsargument skickas.
Bearbetningen av utgångspunkterna är annars som vanligt, t.ex. hitta återkommer i underkataloger om inte annars förhindras. För att endast bearbeta utgångspunkterna, man kan dessutom passera -maxdepth 0 .
Ytterligare anmärkningar: om en fil är listad mer än en gång i indatafil, är det ospecificerat om den besöks mer än en gång. Om filen muteras under operationen av find är resultatet också ospecificerat. Slutligen, den söka position i den namngivna filen vid tidpunkten för att hitta utgångar, vare sig det är med -quit eller på annat sätt, är också ospecificerad. Med "ospecificerat" menas här att det ev eller kanske inte fungerar eller gör någon specifik sak, och att beteende kan ändras från plattform till plattform, eller från findutils släpper till släpp.
-help,--help Skriv ut en sammanfattning av kommandoradens användning av hitta och utgång.
-ignore_readdir_race Normalt kommer find att avge ett felmeddelande när det misslyckas ange en fil. Om du ger det här alternativet och en fil är raderas mellan tid hitta läser namnet på filen från katalogen och den tid den försöker ange filen, inget felmeddelande kommer att utfärdas. Detta gäller även för filer eller kataloger vars namn anges på kommandot linje. Det här alternativet träder i kraft vid tidpunkten för kommandot rad läses, vilket innebär att du inte kan söka på en del av filsystemet med detta alternativ på och en del av det med det här alternativet av (om du behöver göra det måste du göra det utfärda två sökkommandon istället, ett med alternativet och en utan).
Dessutom, hitta med alternativet -ignore_readdir_race kommer att ignorera fel i -delete- åtgärden i fallet med filen har försvunnit sedan den överordnade katalogen lästes: det kommer inte att mata ut en feldiagnostik och returnera koden för -delete- åtgärden kommer att vara sann.
-maxdjupnivåer Gå ner på de flesta nivåer (ett icke-negativt heltal) nivåer av kataloger under utgångspunkterna. Använder -maxdepth 0 innebär endast att tillämpa testerna och åtgärderna på start- poäng själva.
-mindepth nivåer Använd inte några tester eller åtgärder på nivåer som är lägre än nivåer (ett icke-negativt heltal). Att använda -mindepth 1 betyder bearbeta alla filer utom startpunkterna.
-mount Gå inte ner i kataloger på andra filsystem. En alternativt namn för -xdev , för kompatibilitet med vissa andra versioner av hitta .
-noignore_readdir_race Stänger av effekten av -ignore_readdir_race .
-noleaf Optimera inte genom att anta att kataloger innehåller 2 färre underkataloger än antalet hårda länkar. Detta alternativet behövs när du söker efter filsystem som inte gör det följ Unix kataloglänkkonventionen, såsom CD-ROM eller MS-DOS-filsystem eller AFS-volymmonteringspunkter. Varje katalogen på ett normalt Unix-filsystem har minst 2 hårda länkar: dess namn och dess `.' inträde. Dessutom dess underkataloger (om några) har var och en en ".."-post länkad till den katalogen. När hitta undersöker en katalog, efter den har angett 2 färre underkataloger än katalogens länkräkning, den vet att resten av posterna i katalogen är icke-kataloger ('blad'-filer i katalogträd). Om bara filernas namn behöver vara det undersökt, finns det ingen anledning att ange dem; detta ger en betydande ökning av sökhastigheten.
-version, --version Skriv ut sökversionsnumret och avsluta.
-xdev Gå inte ner i kataloger på andra filsystem.
TEST
Vissa tester, till exempel -newerXY och -samefile , tillåter jämförelse mellan den akt som för närvarande granskas och någon referensfil anges på kommandoraden. När dessa tester används,tolkningen av referensfilen bestäms av alternativen -H , -L och -P och alla tidigare -följer , men referensfilen är endast undersökt en gång, vid den tidpunkt då kommandoraden tolkas. Om referensfilen kan inte granskas (till exempel misslyckas stat(2)
-systemanropet för den), ett felmeddelande utfärdas och hitta avslutas med en status som inte är noll.
Ett numeriskt argument n kan specificeras för tester (som -amin , -mtime , -gid , -inum , -links , -size , -uid och -used ) som
+n för större än n ,
-n för mindre än n ,
n för exakt n .
Tester som stöds:
-amin n Filen användes senast mindre än, mer än eller exakt n minuter sedan.
-anewer referens Tidpunkten för den senaste åtkomsten av den aktuella filen är nyare än den för den senaste dataändringen av referensfilen . Om referens är en symbolisk länk och alternativet -H eller alternativet -L är i kraft, då tiden för den sista dataändring av filen den pekar på används alltid.
-atime n Filen användes senast mindre än, mer än eller exakt n *24 timmar sedan. När hitta räknar ut hur många 24-timmars perioder sedan filen senast öppnades, valfri bråkdel delen ignoreras, så för att matcha -atime +1 måste en fil ha åtkomst för minst två dagar sedan.
-cmin n Filens status ändrades senast mindre än, mer än eller exakt n minuter sedan.
-Cnewer referens Tiden för den senaste statusändringen för den aktuella filen är längre senaste än den för den senaste dataändringen av referensfil . Om referensen är en symbolisk länk och alternativet -H eller alternativet -L är i kraft, är tiden för den sista dataändringen av filen den pekar på är alltid använd.
-ctime n Filens status ändrades senast mindre än, mer än eller exakt n *24 timmar sedan. Se kommentarerna för -atime to förstå hur avrundning påverkar tolkningen av filen statusändringstider.
-empty Filen är tom och är antingen en vanlig fil eller en katalog.
-executable Matchar filer som är körbara och kataloger som är sökbara (i filnamnsupplösning) av nuvarande användaren. Detta tar hänsyn till åtkomstkontroll listor och andra behörighetsartefakter som -perm testar ignorerar. Detta test använder sig av access(2) -systemet anrop, och kan därför luras av NFS-servrar som använder UID mappning (eller root-squashing), eftersom många system implementerar access(2) i klientens kärna och kan därför inte använda UID-mappningsinformationen som finns på servern. Därför att detta test baseras endast på resultatet av åtkomsten (2) systemanrop finns det ingen garanti för att en fil som det här testet lyckas kan faktiskt utföras.
-false Alltid falskt.
-fstype typ Filen är på ett filsystem av typen . Den giltiga filsystemtyper varierar mellan olika versioner av Unix; en ofullständig lista över filsystemtyper som accepteras på någon version av Unix eller en annan är: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Du kan använda -printf med %F direktiv för att se typerna av dina filsystem.
-gid n Filens numeriska grupp-ID är mindre än, mer än eller exakt n .
-group gname Filen tillhör gruppen gname (numeriskt grupp-ID tillåtet).
-ilname pattern Som -lname , men matchningen är skiftlägesokänslig. Om alternativet -L eller -follow är aktivt, testar detta returnerar false om inte den symboliska länken är bruten.
-iname mönster Som -name , men matchningen är skiftlägesokänslig. För till exempel mönstren 'fo*' och 'F??' matcha filnamnen `Foo', `FOO', `foo', `fOo', etc. Mönstret `*foo*` kommer att matchar även en fil som heter '.foobar'.
-inum n Filen har ett inodnummer som är mindre än, större än eller exakt n . Det är normalt lättare att använda -samefilen testa istället.
-ipath mönster Som -path . men matchen är skiftlägesokänslig.
-iregex -mönster Som -regex , men matchningen är skiftlägesokänslig.
-helnamnsmönster _ Se -ipath. Detta alternativ är mindre bärbart än -ipath .
-länkar n Filen har mindre än, mer än eller exakt n hårda länkar.
-lname mönster Fil är en symbolisk länk vars innehåll matchar skalmönster mönster . Metatecken behandlar inte `/' eller `.' speciellt. Om alternativet -L eller -följ är in effekt, returnerar detta test falskt om inte den symboliska länken är bruten.
-mmin n Filens data ändrades senast mindre än, mer än eller exakt n minuter sedan.
-mtid n Filens data ändrades senast mindre än, mer än eller exakt n *24 timmar sedan. Se kommentarerna för -atime to förstå hur avrundning påverkar tolkningen av filen ändringstider.
-name pattern
Filnamnets bas (sökvägen med de ledande katalogerna bort) matchar skalmönster . Eftersom den ledande kataloger för filnamnen tas bort, den mönstret ska inte innehålla ett snedstreck, eftersom `-name a/b' kommer aldrig att matcha något (och du vill förmodligen använda -väg istället). Ett undantag från detta är när man endast använder en snedstreck som mönster (`-namn /'), eftersom det är ett giltigt sträng för att matcha rotkatalogen "/" (eftersom basnamnet på "/" är "/"). En varning utfärdas om du försöker att passera ett mönster som innehåller en - men som inte enbart består av ett - snedstreck, om inte miljövariabeln POSIXLY_CORRECT är inställt eller alternativet -nowarn används.
För att ignorera en katalog och filerna under den, använd -prune istället för att kontrollera varje fil i trädet; se en exempel i beskrivningen av den åtgärden. Hängslen är det inte erkänd som speciell, trots att vissa skal inklusive Bash genomsyra hängslen med en speciell betydelse i skalmönster. Filnamnsmatchningen utförs med hjälp av biblioteksfunktionen fnmatch(3) . Gör det inte glöm att skriva mönstret inom citattecken för att skydda den från expansion av skalet.
-nyare referens Tidpunkten för den senaste dataändringen av den aktuella filen är nyare än den för den senaste dataändringen av referensfil . Om referensen är en symbolisk länk och alternativet -H eller alternativet -L är i kraft, är tiden för den sista dataändringen av filen den pekar på är alltid använd.
-newerXY referens Lyckas om tidsstämpel X för filen som övervägs är nyare än tidsstämpel Y för filreferensen . Bokstäverna X och Y kan vara någon av följande bokstäver:
a Åtkomsttiden för filreferensen B Födelsetiden för filreferensen c Inodstatusändringstidpunkten för referensen m Ändringstiden för filreferensen t referensen tolkas direkt som en tid
Vissa kombinationer är ogiltiga; den är till exempel ogiltig för att X ska vara t . Vissa kombinationer är inte implementerade på alla system; till exempel B stöds inte på alla system. Om en ogiltig eller ostödd kombination av XY specificeras, resulterar ett allvarligt fel. Tidsspecifikationer tolkas som för argumentet till -d- alternativet GNU datum . Om du försöker använda födelsetiden för en referens fil, och födelsetiden inte kan fastställas, en dödlig felmeddelande resultat. Om du anger ett test som avser till födelsetiden för filer som granskas kommer detta test misslyckas för alla filer där födelsetiden är okänd.
-nogroup Ingen grupp motsvarar filens numeriska grupp-ID.
-nöser Ingen användare motsvarar filens numeriska användar-ID.
-path pattern Filnamnet matchar skalmönstermönster . De metatecken behandlar inte `/' eller `.' speciellt; så för exempel, hitta . -sökväg "./sr*sc" kommer att skriva ut en post för en katalog som heter ./src/misc (if en finns). För att ignorera ett helt katalogträd, använd -prune istället för att kontrollera varje fil i trädet. Anteckna det mönstermatchningstestet gäller för hela filnamnet, med början från en av startpunkterna som anges på kommandot linje. Det skulle bara vara vettigt att använda en absolut väg namn här om den relevanta startpunkten också är en absolut väg. Detta betyder att detta kommando aldrig kommer att matcha något: hitta bar -sökväg /foo/bar/myfile -print Find jämför argumentet -path med sammanlänkningen av ett katalognamn och basnamnet på filen det är granskning. Eftersom sammanlänkningen aldrig kommer att sluta med en snedstreck, -path -argument som slutar på ett snedstreck kommer att matcha ingenting (förutom kanske en startpunkt som anges på kommandorad). Predikatet -path stöds också av HP-UX hittar och är en del av POSIX 2008-standarden.
-perm -läge Filens tillståndsbitar är exakt läge (oktala eller symbolisk). Eftersom en exakt matchning krävs, om du vill för att använda det här formuläret för symboliska lägen, kanske du måste ange en ganska komplex lägessträng. Till exempel `-perm g=w' kommer bara att matcha filer som har läge 0020 (det vill säga de för vilka gruppens skrivbehörighet är den enda behörighetsuppsättning). Det är mer troligt att du kommer att vilja det använd formerna `/' eller `-', till exempel `-perm -g=w', som matchar alla filer med gruppskrivbehörighet. Se den EXEMPEL avsnitt för några illustrativa exempel.
-perm - läge Alla tillståndsbitars lägen är inställda för filen. Symboliska lägen accepteras i denna form, och så är det vanligtvis på det sätt som du skulle vilja använda dem. Du måste ange `u', `g' eller `o' om du använder ett symboliskt läge. Se avsnittet EXEMPEL för några illustrativa exempel.
-perm / mode Något av tillståndsbitarnas läge är inställt för filen. Symboliska lägen accepteras i denna form. Du måste ange 'u', 'g' eller 'o' om du använder ett symboliskt läge. Ser avsnittet EXEMPEL för några illustrativa exempel . Om inga behörighetsbitar i läge är inställda, detta test matchar någon fil (tanken här är att överensstämma med beteendet av -perm -000 ).
-perm + läge Detta stöds inte längre (och har fasats ut sedan dess 2005). Använd -perm / mode istället.
-läsbar Matchar filer som är läsbara av den aktuella användaren. Detta tar hänsyn till åtkomstkontrolllistor och annat behörighetsartefakter som -perm -testet ignorerar. Detta test använder sig av access(2) systemanropet, och så kan det vara luras av NFS-servrar som gör UID-mappning (eller root- squashing), eftersom många system implementerar access(2) i klientens kärna och kan därför inte använda UID-mappningen information som finns på servern.
-regex -mönster Filnamnet matchar reguljärt uttrycksmönster . Det här är en matcha på hela vägen, inte en sökning. Till exempel att matcha en fil som heter ./fubar3, kan du använda den vanliga uttryck `.*bar.' eller `.*b.*3', men inte `f.*r3'. De reguljära uttryck som förstås av find är som standard Emacs reguljära uttryck (förutom att `.' matchar newline), men detta kan ändras med -regextypen alternativ.
-samefile name Filen refererar till samma inode som name . När -L är inne effekt kan detta inkludera symboliska länkar.
-storlek n [cwbkMG] Filen använder mindre än, mer än eller exakt n enheter av utrymme, avrundning uppåt. Följande suffix kan användas:
`b' för 512-byte block (detta är standard om nej suffix används)
`c' för bytes
"w" för två-byte ord
"k" för kibibyte (KiB, enheter på 1024 byte)
"M" för mebibyte (MiB, enheter på 1024 * 1024 = 1048576 byte)
`G' för gibibyte (GiB, enheter på 1024 * 1024 * 1024 = 1073741824 byte)
Storleken är helt enkelt st_size-medlemmen i strukturstatistiken fylld av lstat (eller stat) systemanropet, avrundat uppåt som visas ovan. Med andra ord är det förenligt med resultat du får för ls -l . Tänk på att "%k" och `%b' formatspecifikationer för -printf hanterar glesa filer annorlunda. Suffixet `b' betecknar alltid 512-byte block och aldrig 1024-byte block, vilket skiljer sig från beteendet hos -ls .
Prefixen + och - betyder större än och mindre än, som vanligt; dvs en exakt storlek på n enheter matchar inte. Tänk på att storleken avrundas uppåt till nästa enhet. Därför motsvarar -storlek -1M inte -storlek -1048576c . Den förra matchar bara tomma filer, den senare matchar filer från 0 till 1 048 575 byte.
-sant Alltid sant.
-typ c Filen är av typ c :
b block (buffrad) special
c-tecken (obuffrad) special
d katalog
p named pipe (FIFO)
f vanlig fil
l symbolisk länk; detta är aldrig sant om alternativet -L eller alternativet -follow är i kraft, om inte symbolisk länk är bruten. Om du vill söka efter symboliska länkar när -L är i kraft, använd -xtype .
s uttag
D dörr (Solaris)
För att söka efter mer än en typ på en gång kan du tillhandahålla den kombinerade listan med typbokstäver separerade med kommatecken `,' (GNU-förlängning).
-uid n Filens numeriska användar-ID är mindre än, mer än eller exakt n .
-used n Filen användes senast mindre än, mer än eller exakt n dagar efter att dess status senast ändrades.
-user uname Filen ägs av användaren uname (numeriskt användar-ID tillåtet).
-helnamnsmönster Se -sökväg . Detta alternativ är mindre portabelt än -path .
-skrivbar Matchar filer som är skrivbara av den aktuella användaren. Detta tar hänsyn till åtkomstkontrolllistor och annat behörighetsartefakter som -perm -testet ignorerar. Detta test använder sig av access(2) systemanropet, och så kan det vara luras av NFS-servrar som gör UID-mappning (eller root- squashing), eftersom många system implementerar access(2) i klientens kärna och kan därför inte använda UID-mappningen information som finns på servern.
-xtype c Samma som -type om inte filen är en symbolisk länk. För symboliska länkar: om alternativet -H eller -P angavs, sant om filen är en länk till en fil av typ c ; om alternativet -L har getts, sant om c är 'l'. Med andra ord, för symboliska länkar kontrollerar -xtype typen av fil den -typen kontrollerar inte.
-kontextmönster _ (endast SELinux) Säkerhetskontexten för filen matchar glob mönster .
HANDLINGAR -radera Ta bort filer eller kataloger; sant om borttagningen lyckades. Om borttagningen misslyckades skickas ett felmeddelande och find s utgångsstatus kommer att vara noll (när den så småningom utgångar).
Varning : Glöm inte att hitta utvärderar kommandoraden som ett uttryck, så att sätta -delete först kommer att göra find försök att ta bort allt under startpunkterna du specificerad.
Användningen av åtgärden -delete på kommandoraden aktiverar automatiskt alternativet -djup . Eftersom -depth i sin tur gör -prune ineffektiv, kan -delete- åtgärden inte med fördel kombineras med -prune .
Ofta kanske användaren vill testa en hitta kommandorad med -print innan du lägger till -delete för själva borttagningen springa. För att undvika överraskande resultat är det oftast bäst att kom ihåg att använda -depth uttryckligen under de tidigare testkörningar.
Åtgärden -delete kommer inte att ta bort en katalog om inte det är tomt.
Tillsammans med alternativet -ignore_readdir_race , find will ignorera fel i -delete- åtgärden i fallet med filen har försvunnit sedan den överordnade katalogen lästes: den kommer inte att mata ut en feldiagnostik, inte ändra utgången kod till icke-noll, och returkoden för -delete- åtgärden kommer att vara sant.
-exec kommando ; Kör kommandot ; sant om 0 status returneras. Allt följande argument att hitta anses vara argument för kommandot tills ett argument som består av `;' är påträffade. Strängen `{}' ersätts av den nuvarande filnamnet bearbetas överallt där det förekommer i argument till kommandot, inte bara i argument där det är ensam, som i vissa versioner av hitta . Båda dessa konstruktioner kan behöva escapes (med en `\') eller citerade för att skydda dem från expansion av skalet. Seravsnittet EXEMPEL för exempel på användningen av -exec alternativ. Det angivna kommandot körs en gång för varje matchad fil. Kommandot exekveras i starten katalog. Det finns oundvikliga säkerhetsproblem omgivande användning av -exec -åtgärden; du bör använda alternativet -execdir istället.
-exec kommandot {} + Denna variant av -exec -åtgärden kör den angivna kommandot på de valda filerna, men kommandoraden är byggd genom att lägga till varje valt filnamn i slutet; de det totala antalet anrop av kommandot kommer att vara mycket mindre än antalet matchade filer. Kommandoraden är byggd på ungefär samma sätt som xargs bygger sin kommandorader. Endast en instans av `{}' är tillåten inom kommandot, och det måste visas i slutet, omedelbart före `+'; det måste undkomma (med en `\') eller citeras för att skydda den från tolkning av skal. Kommandot körs i startkatalogen. Om någon anrop med "+"-formen returnerar en icke-noll värde som utgångsstatus, returnerar sedan en utgång som inte är noll status. Om hitta stöter på ett fel kan detta ibland orsaka en omedelbar utgång, så vissa väntande kommandon kanske inte köras överhuvudtaget. Av denna anledning kanske -exec my- command ... {} + -quit inte resulterar i att my-command faktiskt körs. Denna variant av -exec returnerar alltid Sann.
-execdir kommando ;
-execdir kommandot {} + Som -exec , men det angivna kommandot körs från underkatalog som innehåller den matchade filen, vilket inte är det normalt katalogen där du började hitta . Som med -exec, {} ska citeras om fyndet anropas från ett skal. Detta är en mycket säkrare metod för att anropa kommandon, eftersom det undviker tävlingsförhållanden under upplösning av sökvägarna till de matchade filerna. Precis som med -exec -åtgärden kommer "+"-formen av -execdir att bygga en kommandorad att bearbeta mer än en matchad fil, men en given fil anrop av kommando kommer bara att lista filer som finns i samma underkatalog. Om du använder det här alternativet måste du se till att din PATH- miljövariabel inte gör det referens `.'; annars kan en angripare köra vilka kommandon som helst de gillar genom att lämna en fil med lämpligt namn i en katalog där du kommer att köra -execdir . Det samma gäller att ha poster i PATH som är tomma eller vilka är inte absoluta katalognamn. Om någon åkallelse med "+"-formuläret returnerar ett värde som inte är noll som utgångsstatus find returnerar en utgångsstatus som inte är noll. Om hitta möten ett fel, kan detta ibland orsaka en omedelbar utgång, så vissa väntande kommandon kanske inte körs alls. Resultatet av åtgärden beror på om + eller ; variant är används; -execdir kommando {} + returnerar alltid true, while -execdir kommando {} ; returnerar bara sant om kommandot ger 0.
-fls fil Sant; gillar -ls men skriv till filen som -fprint . Utgången fil skapas alltid, även om predikatet aldrig är det matchade. Se avsnittet OVENLIGA FILNAMN för information om hur ovanliga tecken i filnamn är hanteras.
-fprint fil Sant; skriv ut hela filnamnet i filfilen . Om filen inte finns när find körs skapas den; om det gör det existerar, är det stympat. Filnamnen /dev/stdout och /dev/stderr hanteras speciellt; de hänvisar till standardutgång respektive standardfelutgång. Utdatafilen skapas alltid, även om predikatet är aldrig matchad. Se avsnittet OVENLIGA FILNAMN för information om hur ovanliga tecken i filnamn är hanteras.
-fprint0 fil Sant; som -print0 men skriv till filen som -fprint . De utdatafil skapas alltid, även om predikatet är det aldrig matchade. Se avsnittet OVENLIGA FILNAMN för information om hur ovanliga tecken i filnamn är hanteras.
-fprintf filformat True; gillar -printf men skriv till filen som -fprint . De utdatafil skapas alltid, även om predikatet är det aldrig matchade. Se avsnittet OVENLIGA FILNAMN för information om hur ovanliga tecken i filnamn är hanteras.
-ls Sant; lista aktuell fil i ls -dils format på standard produktion. Blockantalet är 1 KB block, såvida inte miljövariabeln POSIXLY_CORRECT är inställd, i vilket fall 512-byte block används. Se OVENLIGA FILNAMN avsnitt för information om hur ovanliga tecken in filnamn hanteras.
-ok kommando ; Gilla -exec men fråga användaren först. Om användaren samtycker, kör kommandot. Annars är det bara att returnera falskt. Om kommandot körs, dess standardinmatning omdirigeras från /dev/null . Denna åtgärd får inte anges tillsammans medalternativet -files0 -from .
Svaret på prompten matchas mot ett par reguljära uttryck för att avgöra om det är jakande eller negativ respons. Detta reguljära uttryck erhålls från systemet om miljön POSIXLY_CORRECT variabeln är inställd, eller på annat sätt från find s meddelande översättningar. Om systemet inte har någon lämplig definition, finds egen definition kommer att användas. I båda fallen tolkning av det reguljära uttrycket i sig kommer att vara påverkas av miljövariablerna LC_CTYPE (tecken klasser) och LC_COLLATE (teckenintervall och ekvivalens klasser).
-okdir kommando ; Gilla -execdir men fråga användaren först på samma sätt som för -ok . Om användaren inte accepterar, returnera bara false. Om kommandot körs omdirigeras dess standardinmatning från /dev/null . Denna åtgärd kanske inte anges tillsammans med alternativet -files0-from .
-print Sant; skriv ut hela filnamnet på standardutdata, följt av en nyrad. Om du rör utgången av hitta in i ett annat program och där finns det svagaste möjligheten att filerna som du söker efter kan innehålla en ny rad, så borde du seriöst överväg att använda alternativet -print0 istället för -print . Ser avsnittet OVENLIGA FILNAMN för information om hur ovanliga tecken i filnamn hanteras.
-tryck 0 Sann; skriv ut hela filnamnet på standardutdata, följt av ett nolltecken (istället för nyraden tecken som -print använder). Detta tillåter filnamn som innehålla nylinjer eller andra typer av blanksteg att vara korrekt tolkad av program som bearbetar sökresultatet . Detta alternativ motsvarar alternativet -0 för xargs .
-printf format Sant; utskriftsformat på standardutgången, tolkning `\' escapes och `%' direktiv. Fältbredder och precisioner kan specificeras som med printf(3) C fungera. Observera att många av fälten är utskrivna som %s snarare än %d, och det kan betyda att flaggor inte gör det fungera som du kan förvänta dig. Detta betyder också att "-" flaggan fungerar (den tvingar fält att vara vänsterjusterade). Till skillnad från -print lägger -printf inte till en nyrad i slutet av strängen. Utrymningarna och direktiven är:
\a Alarmklocka.
\b Backsteg.
\c Sluta omedelbart att skriva ut från detta format och spola utgången.
\f Form feed.
\n Ny linje.
Vagnretur.
\t Horisontell flik.
\v Vertikal flik.
\0 ASCII NUL.
\\ Ett bokstavligt snedstreck (`\').
\NNN Det tecken vars ASCII-kod är NNN (oktal).
Ett `\'-tecken följt av ett annat tecken behandlas som ett vanligt tecken, så de båda skrivs ut.
%% Ett bokstavligt procenttecken.
%a Filens senaste åtkomsttid i formatet som returneras avfunktionen C ctime(3) .
%A k Filens senaste åtkomsttid i formatet som anges av k , vilket är antingen `@' eller ett direktiv för funktionen C strftime(3) . Följande visar en ofullständig lista över möjliga värden för k . Snälla du se dokumentationen för strftime(3) för full lista. Några av konverteringsspecifikationerna tecken kanske inte är tillgängliga på alla system, på grund av skillnader i genomförandet av strftime(3) biblioteksfunktion.
@ sekunder sedan 1 januari 1970, 00:00 GMT, med bråkdel.
Tidsfält:
H timme (00..23)
I timme (01..12)
k timme (0..23)
l timme (1..12)
M minut (00..59)
p-lokalens AM eller PM
r tid, 12 timmar (hh:mm:ss [AP]M)
S Andra (00.00 ... 61.00). Det finns en bråkdel.
T tid, 24 timmar (hh:mm:ss.xxxxxxxxxx)
+ Datum och tid, avgränsade med "+", till exempel "2004-04-28+22:22:05.0". Detta är en GNU förlängning. Tiden anges i strömmen tidszon (som kan påverkas av inställningen miljövariabeln TZ ). Sekunderna fältet innehåller en bråkdel.
X-lokalens tidsrepresentation (H:M:S). De sekunders fält innehåller en bråkdel.
Z tidszon (t.ex. EDT), eller ingenting om ingen tid zonen är bestämbar
Datumfält:
en lokals förkortade veckodagsnamn (sön..lör)
En lokals fullständiga veckodagsnamn, variabel längd (Söndag lördag)
b-lokalens förkortade månadsnamn (jan..dec)
B-lokalens fullständiga månadsnamn, variabel längd (januari..december)
c lokalens datum och tid (lör 4 november 12:02:33 EST 1989). Formatet är detsamma som för ctime(3) och så för att bevara kompatibiliteten med det formatet finns det ingen bråk del i sekundfältet.
d dag i månaden (01..31)
D-datum (mm/dd/åå)
F-datum (åååå-mm-dd)
h samma som b
j dag på året (001..366)
m månad (01..12)
U veckonummer år med söndag som första dag veckan (00..53)
w veckodag (0..6)
W veckonummer år med måndag som första dag veckan (00..53)
x-lokalens datumrepresentation (mm/dd/åå)
y sista två siffror i år (00..99)
Y år (1970...)
%b Mängden diskutrymme som används för den här filen 512-byte block. Eftersom diskutrymme är allokerat i multipler av filsystemets blockstorlek detta är vanligtvis större än %s/512, men det kan också vara det mindre om filen är en gles fil.
%B k Filens födelsetid, dvs. dess skapelsetid, i format som anges av k , vilket är samma som för %A. Detta direktiv producerar en tom sträng om underliggande operativsystem eller filsystem gör det inte stödja födelsetider.
%c Filens senaste statusändringstid i formatetreturneras av funktionen C ctime(3) .
%C k Filens senaste statusändringstid i formatet specificeras av k , vilket är samma som för %A.
%d Filens djup i katalogträdet; 0 betyder filen är en utgångspunkt.
%D Det enhetsnummer som filen finns på (den st_dev-fältet för struct stat), i decimal.
%f Skriv ut basnamnet; filens namn med någon ledande kataloger borttagna (endast de sista element). För / är resultatet `/'. Se avsnittet EXEMPEL för ett exempel.
%F Typ av filsystem filen är på; detta värde kan användas för -fstype.
%g Filens gruppnamn, eller numeriskt grupp-ID om gruppen har inget namn.
%G Filens numeriska grupp-ID.
%h Dirname; de ledande katalogerna för filens namn (alla utom det sista elementet). Om filnamnet innehåller inga snedstreck (eftersom den är i strömmen katalog) %h-specifikationen expanderas till `.'. För filer som i sig är kataloger och innehåller ett snedstreck (inklusive / ), %h expanderar till det tomma sträng. Se avsnittet EXEMPEL för ett exempel.
%H Startpunkt under vilken filen hittades.
%i Filens inodnummer (i decimal).
%k Mängden diskutrymme som används för denna fil i 1 KB block. Eftersom diskutrymme allokeras i multiplar av filsystemets blockstorlek är detta vanligtvis större än %s/1024, men den kan också vara mindre om filen är en gles fil.
%l Objekt med symbolisk länk (tom sträng om filen är inte en symbolisk länk).
%m Filens behörighetsbitar (i oktal). Detta alternativ använder de "traditionella" talen som de flesta Unix implementeringar använder, men om din speciella implementering använder en ovanlig ordning av oktal behörighetsbitar kommer du att se en skillnad mellan det faktiska värdet av filens läge och utdata av %m. Normalt vill du ha en ledande noll på detta nummer, och för att göra detta bör du använda# -flaggan (som i t.ex. `%#m').
%M Filens behörigheter (i symbolisk form, som för ls ). Detta direktiv stöds i findutils 4.2.5 och senare.
%n Antal hårda länkar till fil.
%p Filens namn.
%P Filens namn med namnet på startpunkten under vilken den hittades borttagen.
%s Filstorlek i byte.
%S Filens gleshet. Detta beräknas som (BLOCKSIZE*st_blocks /st_size). Det exakta värdet du får för en vanlig fil av en viss längden är systemberoende. Dock normalt glesa filer kommer att ha värden mindre än 1.0, och filer som använder indirekta block kan ha ett värde vilket är större än 1,0. I allmänhet numret av block som används av en fil är filsystemberoende. Värdet som används för BLOCKSIZE är systemberoende, men är vanligtvis 512 byte. Om filstorleken är noll, det utskrivna värdet är odefinierat. På system som saknar stöd för st_blocks, en fils glesheten antas vara 1,0.
%t Filens senaste ändringstid i formatetreturneras av funktionen C ctime(3) .
%T k Filens senaste ändringstid i formatet specificeras av k , vilket är samma som för %A.
%u Filens användarnamn, eller numeriskt användar-ID om användaren har inget namn.
%U Filens numeriska användar-ID.
%y Filtyp (som i ls -l ), U=okänd typ (borde inte hända)
%Y Filtyp (som %y), plus följ symboliska länkar: `L'=loop, `N'=befintlig, `?' för alla andra fel när man bestämmer typen av målet för en symbolisk länk.
%Z (endast SELinux) filens säkerhetskontext.
%{ %[ %( Reserverad för framtida bruk.
Ett `%'-tecken följt av ett annat tecken är kasseras, men det andra tecknet skrivs ut (lita inte på detta, eftersom ytterligare formattecken kan införas). En `%' i slutet av formatargumentet orsakar odefinierat beteende eftersom det inte finns någon följande karaktär. I några lokaler, kan det dölja dina dörrnycklar, medan det i andra kan ta bort den sista sidan från romanen du läser.
Direktiven %m och %d stöder flaggorna # , 0 och + , men de andra direktiven gör det inte, även om de trycker siffror. Numeriska direktiv som inte stöder dessa flaggor inkluderar G , U , b , D , k och n . "-"-formatflaggan stöds och ändrar justeringen av ett fält från högerjusterat (vilket är standard) till vänsterjusterad.
Se avsnittet OVENLIGA FILNAMN för information om hur ovanliga tecken i filnamn hanteras.
-beskär Sant; om filen är en katalog, gå inte ner i den. Om -djup ges, har -prune ingen effekt. Eftersom -delete innebär -depth , kan du inte använda -prune och -delete tillsammans. Till exempel att hoppa över katalogen src/emacs och alla filer och kataloger under den, och skriv ut namnen på de andra filerna som hittats, gör något så här: hitta . -sökväg ./src/emacs -prune -o -print
-quit Avsluta omedelbart (med returvärde noll om inga fel har inträffade). Detta skiljer sig från -prune eftersom -prune gäller endast innehållet i beskurna kataloger, medan -quit gör helt enkelt att hitta stannar omedelbart. Inget barn processer kommer att köras. Alla kommandorader som har byggts av -exec ... + eller -execdir ... + are anropas innan programmet avslutas. Efter -avsluta är körs kommer inga fler filer som anges på kommandoraden bearbetas. Till exempel, ` find /tmp/foo /tmp/bar -print -quit ` kommer endast att skrivas ut `/tmp/foo`. En vanlig användning av -quit är att sluta söka i filen system när vi har hittat det vi vill ha. Till exempel om vi vill bara hitta en enda fil vi kan göra så här: hitta / -namn nål -print -quit
OPERATÖRER Listad i fallande prioritetsordning:
( expr ) Tvinga företräde. Eftersom parenteser är speciella för shell, du kommer normalt att behöva citera dem. Många av exempel på den här manualsidan använder snedstreck för detta syfte: `\(...\)' istället för `(...)'.
! expr True om expr är falskt. Denna karaktär kommer också vanligtvis behöver skydd mot tolkning av skalet.
-inte expr Samma som ! expr , men inte POSIX-kompatibel.
expr1 expr2 Två uttryck i rad anses vara sammanfogade med en underförstådd -a ; expr2 utvärderas inte om expr1 är falskt.
expr1 -a expr2 Samma som expr1 expr2 .
expr1 -och expr2 Samma som expr1 expr2 , men inte POSIX-kompatibel.
expr1 -o expr2 Eller; expr2 utvärderas inte om expr1 är sant.
expr1 -eller expr2 Samma som expr1 -o expr2 , men inte POSIX-kompatibel.
expr1 , expr2 Lista; både expr1 och expr2 utvärderas alltid. De värdet på expr1 kasseras; värdet på listan är värdet av expr2 . Kommaoperatorn kan vara användbar för söker efter flera olika typer av saker, men gå igenom filsystemhierarkin endast en gång. De -fprintf action kan användas för att lista de olika matchade objekt i flera olika utdatafiler.
Observera att -a när det anges implicit (till exempel med två tester som visas utan en explicit operatör mellan dem) eller har uttryckligen högre prioritet än -o . Det betyder att hitta . -name afile -o -name bfile -print kommer aldrig att skriva ut afile .
OVENLIGA FILNAMN topp
Många av åtgärderna för att hitta resulterar i utskrift av data som är under kontroll av andra användare. Detta inkluderar filnamn, storlekar, modifieringstider och så vidare. Filnamn är en potentiellt problem eftersom de kan innehålla vilket tecken som helst förutom `\0' och `/'. Ovanliga tecken i filnamn kan göra oväntat och ofta oönskade saker till din terminal (t.ex. ändra inställningarna för dina funktionstangenter på vissa terminaler). Ovanliga karaktärer hanteras olika av olika handlingar, som beskrivet nedan.
-print0, -fprint0 Skriv alltid ut det exakta filnamnet, oförändrat, även om utgången går till en terminal.
-ls, -fls Ovanliga karaktärer undkommer alltid. Vitt utrymme, omvänt snedstreck och dubbla citattecken skrivs ut med C-stil escaping (till exempel `\f', `\"'). Annat ovanligt tecken skrivs ut med en oktal escape. Övrig utskrivbara tecken (för -ls och -fls är dessa tecken mellan oktal 041 och 0176) skrivs ut som de är.
-printf, -fprintf Om utgången inte går till en terminal skrivs den ut i befintligt skick. Annars beror resultatet på vilket direktiv är i bruk. Direktiven %D, %F, %g, %G, %H, %Y och %y expandera till värden som inte är under kontroll av filer" ägare, och så skrivs de ut som de är. Direktiven %a, %b, %c, %d, %i, %k, %m, %M, %n, %s, %t, %u och %U har värden som är under kontroll av filers ägare men vilka kan inte användas för att skicka godtyckliga data till terminalen, och så dessa skrivs ut som de är. Direktiven %f, %h, %l, %p och %P är citerade. Denna citat utförs på samma sätt sätt som för GNU ls . Detta är inte samma citeringsmekanism som den som används för -ls och -fls . Om du kan bestäm vilket format som ska användas för utmatningen av hitta sedan det är normalt bättre att använda `\0' som en terminator än att använda nyrad, eftersom filnamn kan innehålla blanksteg och nyrad tecken. Inställningen för LC_CTYPE -miljön variabel används för att bestämma vilka tecken som måste vara citerade.
-tryck, -ftryck Citering hanteras på samma sätt som för -printf och -fprintf . Om du använder hitta i ett skript eller i en situation där de matchade filerna kan vara godtyckliga namn bör du överväga att använda -print0 istället för -print .
Åtgärderna -ok och -okdir skriver ut det aktuella filnamnet som det är. Detta kan ändras i en framtida version.
STANDARD KONFORMANCE topp
För närmast överensstämmelse med POSIX-standarden bör du ställa in miljövariabeln POSIXLY_CORRECT . Följande alternativ är specificeras i POSIX-standarden (IEEE Std 1003.1-2008, 2016 Utgåva):
-H Det här alternativet stöds.
-L Det här alternativet stöds.
-name Det här alternativet stöds, men POSIX-överensstämmelse beror på POSIX-överensstämmelsen för systemets fnmatch(3) -bibliotek fungera. Från och med findutils-4.2.2, skalmetatecken (`*', `?' eller `[]' till exempel) matchar en ledande `.', eftersom IEEE PASC-tolkning 126 kräver detta. Detta är en ändring från tidigare versioner av findutils.
-typ Stöds. POSIX anger `b', `c', `d', `l', `p', `f' och `s'. GNU find stöder också `D', som representerar en dörr, där OS tillhandahåller dessa. Dessutom tillåter GNU find flera typer som ska anges samtidigt i ett komma- separerad lista.
-ok Stöds. Tolkning av svaret är enl "ja"- och "nej"-mönstren som väljs genom att ställa in LC_MESSAGES miljövariabel. När miljövariabeln POSIXLY_CORRECT är inställd kommer dessa mönster tas systemets definition av ett positivt (ja) eller negativt (ingen) svar. Se systemets dokumentation för nl_langinfo(3) , särskilt YESEXPR och NOEXPR. När POSIXLY_CORRECT inte är inställt är mönstren istället hämtad från finds egen meddelandekatalog.
-nyare Stöds. Om den angivna filen är en symbolisk länk, är den är alltid bortskämd. Detta är en förändring från tidigare beteende, som brukade ta den relevanta tiden från symbolisk länk; se avsnittet HISTORIK nedan.
-perm Stöds. Om miljövariabeln POSIXLY_CORRECT är inte satt, vissa lägesargument (till exempel +a+x) som är inte giltigt i POSIX stöds för bakåt- kompatibilitet.
Andra primärval Primärerna -atime , -ctime , -depth , -exec , -group , -links , -mtime , -nogroup , -nouser , -ok , -path , -print , -prune , -size , -user och -xdev är allt stöds.
POSIX-standarden anger parenteser `(', `)', negation `!' och de logiska OCH/ELLER-operatorerna -a och -o .
Alla andra alternativ, predikat, uttryck och så vidare är tillägg utöver POSIX-standarden. Många av dessa tillägg är dock inte unika för GNU-fynd.
POSIX-standarden kräver att hitta detekterar loopar:
Sökverktyget ska detektera oändliga loopar ; det är, gå in i en tidigare besökt katalog som är en förfader till den senaste filen som påträffades. När den upptäcker en infinite loop, find ska skriva ett diagnostiskt meddelande till standardfel och ska antingen återställa sin position i hierarkin eller avsluta.
GNU find uppfyller dessa krav. Länkantalet på kataloger som innehåller poster som är hårda länkar till en förfader kommer ofta att vara lägre än de annars borde vara. Detta kan innebära att GNU-fynd ibland optimerar bort besöket av en underkatalog som faktiskt är en länk till en förfader. Eftersom find faktiskt inte går in i en sådan underkatalog, det är tillåtet för att undvika att sända ett diagnostiskt meddelande. Även om detta beteende kan vara något förvirrande, det är osannolikt att någon faktiskt beror på detta beteende. Om lövoptimeringen har varit avstängd med -noleaf , kommer katalogposten alltid att vara det undersökt och diagnosmeddelandet kommer att utfärdas där det finns lämplig. Symboliska länkar kan inte användas för att skapa filsystem cykler som sådan, men om alternativet -L eller -följ är in användning, utfärdas ett diagnostiskt meddelande när hitta stöter på en loop av symboliska länkar. Som med slingor som innehåller hårda länkar, bladet optimering innebär ofta att hitta vet att den inte behöver att anropa stat() eller chdir() på den symboliska länken, så detta diagnostik är ofta inte nödvändig.
Alternativet -d stöds för kompatibilitet med olika BSD system, men du bör använda det POSIX-kompatibla alternativet -depth istället.
Miljövariabeln POSIXLY_CORRECT
påverkar inte beteendet hos -regex- eller -iregex -testen eftersom dessa tester är inte specificerade i POSIX-standarden.
MILJÖVARIABLER topp
LANG Ger ett standardvärde för internationaliseringen variabler som är inställda eller null.
LC_ALL Om inställt på ett icke-tomt strängvärde, åsidosätt värdena för alla andra internationaliseringsvariabler.
LC_COLLATE POSIX-standarden anger att denna variabel påverkar mönstermatchningen som ska användas för alternativet -name . GNU find använder biblioteksfunktionen fnmatch(3) och så stöd för LC_COLLATE beror på systembiblioteket. Detta variabeln påverkar också tolkningen av svaret till -ok ; medan variabeln LC_MESSAGES väljer den faktiska mönster som används för att tolka svaret på -ok , den tolkning av eventuella parentesuttryck i mönstret kommer att påverkas av LC_COLLATE .
LC_CTYPE Denna variabel påverkar behandlingen av karaktärsklasser används i reguljära uttryck och även med -name- testet, om systemets biblioteksfunktion fnmatch(3) stöder detta. Denna variabel påverkar också tolkningen av ev teckenklasser i reguljära uttryck som används för tolka svaret på prompten från -ok . Miljövariabeln LC_CTYPE kommer också att påverka vilken tecken anses vara oskrivbara när filnamn är tryckta; se avsnittet OVENLIGA FILNAMN.
LC_MESSAGES Bestämmer den plats som ska användas för internationaliserad meddelanden. Om miljövariabeln POSIXLY_CORRECT är uppsättning, detta avgör också tolkningen av svar på uppmaningen från -ok- åtgärden.
NLSPATH Bestämmer platsen för internationaliseringen meddelandekataloger.
PATH Påverkar katalogerna som söks för att hitta körbara filer som anropas av -exec , -execdir , -ok och -okdir .
POSIXLY_CORRECT Bestämmer blockstorleken som används av -ls och -fls . Om POSIXLY_CORRECT är inställt är blocken enheter på 512 byte. Annars är de enheter på 1024 byte.
Om du ställer in denna variabel stänger du också av varningsmeddelanden (det vill säga antyder -nowarn ) som standard, eftersom POSIX kräver att förutom utdata för -ok , alla meddelanden tryckt på stderr är diagnostik och måste resultera i en utgångsstatus som inte är noll.
När POSIXLY_CORRECT inte är inställt behandlas -perm +zzz precis som -perm /zzz om +zzz inte är ett giltigt symboliskt läge. När POSIXLY_CORRECT är inställt behandlas sådana konstruktioner som ett fel.
När POSIXLY_CORRECT är inställt kommer svaret på prompten gjord av -ok handlingen tolkas enligt systemets meddelandekatalog, till skillnad från enl hitta egna meddelandeöversättningar.
TZ Påverkar den tidszon som används för en del av de tidsrelaterade formatdirektiv av -printf och -fprintf .
EXEMPEL överst
Enkel `find|xargs`-metod • Hitta filer med namnet core i eller under katalogen /tmp and radera dem.
$ hitta /tmp -namn kärna -typ f -print | xargs /bin/rm -f
Observera att detta kommer att fungera felaktigt om det finns några filnamn som innehåller nya rader, enkla eller dubbla citattecken, eller mellanslag.
Säkrare `find -print0 | xargs -0` approach • Hitta filer med namnet core i eller under katalogen /tmp and radera dem, bearbeta filnamn på ett sådant sätt att filen eller katalognamn som innehåller enkla eller dubbla citattecken, mellanslag eller nyrader hanteras korrekt.
$ hitta /tmp -namn kärna -typ f -print0 | xargs -0 /bin/rm -f
-namntestet kommer före -typetestet för att undvika att behöva anropa stat(2) på varje fil.
Observera att det fortfarande pågår ett lopp mellan tidsfynd genomgångar hierarkin som skriver ut de matchande filnamnen, och tiden för process som körs av xargs fungerar med den filen.
Bearbetar godtyckliga utgångspunkter • Med tanke på att ett annat programproggy förfiltrerar och skapar en enorm NUL-separerad lista med filer, bearbeta dem som startpunkter och hitta alla vanliga, tomma filer bland dem:
$ proggy | hitta -filer0-från - -maxdjup 0 -typ f -tom
Användningen av `-filer0-från -` betyder att läsa namnen på utgångspunkter från standardinmatning , dvs från röret; och -maxdepth 0 säkerställer att endast dessa poster explicit granskas utan att återkomma i kataloger (i om en av utgångspunkterna är en).
Utföra ett kommando för varje fil • Kör fil på varje fil i eller under den aktuella katalogen.
$ hitta. -typ f -exec filen '{}' \;
Observera att hängslen är omgivna av enkla citattecken för att skydda dem från tolkning som skalmanus skiljetecken. Semikolonet skyddas på liknande sätt av användning av ett snedstreck, även om enstaka citattecken kunde ha varit det används i så fall också.
I många fall kanske man föredrar `-exec ... +` eller bättre `-execdir ... +` -syntaxen av prestanda- och säkerhetsskäl.
Gå igenom filsystemet bara en gång - för 2 olika åtgärder • Gå igenom filsystemet bara en gång, lista set-user-ID filer och kataloger till /root/suid.txt och stora filer till /root/big.txt .
$ hitta / \ \( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) , \ \( -storlek +100M -fprintf /root/big.txt '%- 10s %p\n' \)
Det här exemplet använder radfortsättningstecknet '\' på de två första raderna för att instruera skalet att fortsätta läser kommandot på nästa rad.
Söker efter filer efter ålder • Sök efter filer i din hemkatalog som har varit har ändrats under de senaste tjugofyra timmarna.
$ hitta $HOME -mtid 0
Detta kommando fungerar på detta sätt eftersom tiden sedan varje filen ändrades senast delas med 24 timmar och eventuella resten kasseras. Det betyder att för att matcha -mtime 0 måste en fil ha en modifiering i det förflutna vilket är mindre än 24 timmar sedan.
Söker efter filer med behörigheter • Sök efter filer som är körbara men inte läsbara.
$ hitta /sbin /usr/sbin -körbar \! -läsbart -tryck
• Sök efter filer som har läs- och skrivbehörighet för deras ägare och grupp, men som andra användare kan läsa men inte skriva till.
$ hitta. -perm 664
Filer som uppfyller dessa kriterier men har andra behörigheter bitar set (till exempel om någon kan köra filen) kommer inte att matchas.
• Sök efter filer som har läs- och skrivbehörighet för deras ägare och grupp, och som andra användare kan läsa, utan hänsyn till förekomsten av något extra tillstånd bitar (till exempel den körbara biten).
$ hitta. -perm -664
Detta kommer att matcha en fil som har läge 0777 , till exempel.
• Sök efter filer som är skrivbara av någon (deras ägare, eller deras grupp eller någon annan).
$ hitta. -perm /222
• Sök efter filer som är skrivbara av någon av deras ägare eller deras grupp.
$ hitta. -perm /220 $ hitta . -perm /u+w,g+w $ hitta . -perm /u=w,g=w
Alla dessa tre kommandon gör samma sak, men den första använder den oktala representationen av filläget, och de andra två använder den symboliska formen. Filerna gör det inte måste kunna skrivas av både ägaren och gruppen matchade; antingen kommer att göra.
• Sök efter filer som är skrivbara av båda deras ägare och deras grupp.
$ hitta. -perm -220 $ hitta . -perm -g+w,u+w
Båda dessa kommandon gör samma sak.
• En mer detaljerad sökning på behörigheter.
$ hitta. -perm -444 -perm /222 \! -perm /111 $ hitta . -perm -a+r -perm /a+w \! -perm /a+x
Dessa två kommandon söker båda efter filer som är läsbara för alla ( -perm -444 eller -perm -a+r ), har minst en skrivbit set ( -perm /222 eller -perm /a+w ) men är det inte körbar för vem som helst ( ! -perm /111 eller ! -perm /a+x respektive).
Beskärning - utelämna filer och underkataloger • Kopiera innehållet i /source-dir till /dest-dir , men utelämna filer och kataloger med namnet .snapshot (och allt i dem). Det utelämnar också filer eller kataloger vars namn slutar i `~', men inte deras innehåll.
$ cd /source-dir $ hitta . -namn .snapshot -prune -o \( \! -namn '*~' -print0 \) \ | cpio -pmd0 /dest-dir
Konstruktionen -prune -o \( ... -print0 \) är ganska vanlig. Tanken här är att uttrycket före -prune matchar saker som ska beskäras. Men åtgärden -beskär själv returnerar sant, så följande -o säkerställer att höger sida utvärderas endast för dessa kataloger som inte beskärs (innehållet i beskärningen kataloger besöks inte ens, så deras innehåll är det irrelevant). Uttrycket på höger sida av -o står inom parentes endast för tydlighetens skull. Det understryker det åtgärden -print0 äger rum endast för saker som inte gjorde det har -prune applicerat på dem. Eftersom standard "och" tillstånd mellan testerna binder hårdare än -o , detta är standard ändå, men parenteserna hjälper till att visa vad händer.
• Med tanke på följande katalog över projekt och deras associerade SCM administrativa kataloger, utföra en effektivt söka efter projektens rötter:
$ hitta repo/ \ \( -exec test -d '{}/.svn' \; \ -eller -exec test -d '{}/.git' \; \ -eller -exec test -d '{}/ CVS' \; \ \) -print -prune
Exempelutgång:
repo/project1/CVS repo/gnu/project2/.svn repo/gnu/project3/.svn repo/gnu/project3/src/.svn repo/project4/.git
I det här exemplet förhindrar -prune onödig nedstigning till kataloger som redan har upptäckts (till exempel vi söker inte i project3/src eftersom vi redan hittat project3/.svn ), men ser till att syskonkataloger ( project2 och project3 ) hittas.
Andra användbara exempel • Sök efter flera filtyper.
$ hitta /tmp -typ f,d,l
Sök efter filer, kataloger och symboliska länkar i katalogen /tmp skickar dessa typer som kommaseparerade list (GNU-tillägg), som annars motsvarar längre, men ändå mer bärbar:
$ hitta /tmp \( -typ f -o -typ d -o -typ l \)
• Sök efter filer med det speciella namnet nål och stoppa direkt när vi hittar den första.
$ hitta / -namn nål -print -quit
• Demonstrera tolkningen av formaten %f och %h direktiv från -printf- åtgärden för vissa hörnfall. Här är ett exempel inklusive en del utdata.
$ hitta. .. / /tmp /tmp/TRACE kompilera compile/64/tests/find -maxdepth 0 -printf '[%h][%f]\n' [.][.] [.][..] [ ] [ /] [][tmp] [/tmp][TRACE] [.][compile] [compile/64/tests][find]
EXIT STATUS topp
hitta utgångar med status 0 om alla filer bearbetas framgångsrikt, större än 0 om fel uppstår. Detta är medvetet en mycket bred beskrivning, men om returvärdet inte är noll, du bör inte förlita sig på riktigheten av resultaten av hitta .
När något fel uppstår kan sökning stoppas omedelbart, utan slutföra alla angivna åtgärder. Till exempel några startande poäng kanske inte har granskats eller något pågående program anrop för -exec ... {} + eller -execdir ... {} + kanske inte har utförts.
HISTORIA topp
Ett sökprogram dök upp i version 5 Unix som en del av Programmerarens Workbench-projekt och skrevs av Dick Haight. Doug McIlroy's A Research UNIX Reader: Annotated Excerpts from the Programmer's Manual, 1971-1986 ger några ytterligare detaljer; du kan läsa den online på < https://www.cs.dartmouth.edu/~doug/reader.pdf >.
GNU -fynd skrevs ursprungligen av Eric Decker, med förbättringar av David MacKenzie, Jay Plett och Tim Wood. Idén till find -print0 och xargs -0 kom från Dan Bernstein.
KOMPATIBILITET topp
Från och med findutils-4.2.2, skalmetatecken (`*', `?' eller `[]' för exempel) som används i filnamnsmönster matchar en ledande `.', eftersom IEEE POSIX-tolkning 126 kräver detta.
Från och med findutils-4.3.3 matchar nu -perm /000 alla filer istället av ingen.
Nanosekund-upplösning tidsstämplar implementerades i findutils-4.3.3.
Från och med findutils-4.3.11, anger åtgärdsuppsättningarna -delete find 's exit status till ett värde som inte är noll när det misslyckas. Hitta kommer dock inte gå ut omedelbart. Tidigare påverkades Finds utgångsstatus opåverkadgenom att -delete misslyckades .
Funktion tillagd i Förekommer också i -filer0-från 4.9.0 -newerXY 4.3.3 BSD -D 4.3.1 -O 4.3.1 -läsbar 4.3.0 -skrivbar 4.3.0 -körbar 4.3.0 -regextyp 4.2.24 -exec ... + 4.2.12 POSIX -execdir 4.2.12 BSD -okdir 4.2.12 -sammafil 4.2.11 -H 4.2.5 POSIX -L 4.2.5 POSIX -P 4.2.5 BSD -radera 4.2.3 -sluta 4.2.3 -d 4.2.3 BSD -helnamn 4.2.0 -wholename 4.2.0 -ignore_readdir_race 4.2.0 -fls 4.0 -ilname 3.8 -iname 3.8 -ipath 3.8 -iregex 3.8
Syntaxen -perm +MODE togs bort i findutils-4.5.12, till förmån av -perm /MODE . +MODE- syntaxen hade fasats ut sedan dess findutils-4.2.21 som släpptes 2005.
ICKE-BUGS
Operatörsprioritet överraskar Kommandot hitta . -name afile -o -name bfile -print kommer aldrig print afile eftersom detta faktiskt motsvarar hitta . -name afile -o \( -name bfile -a -print \) . Kom ihåg att företräde för -a är högre än för -o och när det finns nej operatör specificerad mellan testerna, -a antas.
"sökvägar måste föregå uttryck" felmeddelande $ hitta . -namn *.c -print hitta: sökvägar måste föregå uttryck hitta: möjligt mönster utan citat efter predikatet `-name'?
Detta händer när skalet kunde utöka mönstret *.c till mer än ett filnamn som finns i den aktuella katalogen och passerar de resulterande filnamnen på kommandoraden för att hitta så här: find . -name frcode.c locate.c word_io.c -print Det kommandot kommer naturligtvis inte att fungera, eftersom -name predikat tillåter exakt ett mönster som argument. Istället av att göra saker på det här sättet, bör du bifoga mönstret i citat eller undkomma jokertecknet, vilket gör det möjligt för find att använda mönster med jokertecken under sökningen efter filnamn matchande istället för filnamn utökade med det överordnade skalet: $ hitta. -namn '*.c' -print $ hitta . -namn \*.c -print
BUGS
Det finns säkerhetsproblem i beteendet som POSIX-standarden anger för find , vilket därför inte kan vara det fast. Till exempel är åtgärden -exec i sig osäker, och -execdir bör användas istället.
Miljövariabeln LC_COLLATE har ingen effekt på -ok handling.
RAPPORTERING AV BUGGAR
GNU findutils onlinehjälp: < https://www.gnu.org/software/findutils/#get-help > Rapportera eventuella översättningsfel till < https://translationproject.org/team/ >
Rapportera alla andra problem via formuläret i GNU Savannah-felet spårare: < https://savannah.gnu.org/bugs/?group=findutils > Allmänna ämnen om GNU findutils-paketet diskuteras påe-postlistan bug -findutils : < https://lists.gnu.org/mailman/listinfo/bug-findutils >
COPYRIGHT topp
Copyright © 1990-2023 Free Software Foundation, Inc. Licens GPLv3+: GNU GPL version 3 eller senare < https://gnu.org/licenses/gpl.html >. Detta är fri programvara: du är fri att ändra och distribuera om Det. Det finns INGEN GARANTI, i den utsträckning som lagen tillåter.
SE ÄVEN toppen
chmod(1) , locate(1) , ls(1) , updatedb(1) , xargs(1) , lstat(2) , stat(2) , ctime(3) fnmatch(3) , printf(3) , strftime (3) , lokaliserad (5), regex(7)
Fullständig dokumentation < https://www.gnu.org/software/findutils/find > eller tillgänglig lokalt via: info hitta
KOLOFON
Den här sidan är en del av findutils -projektet (hitta verktyg). Information om projektet finns på ⟨ http://www.gnu.org/software/findutils/ ⟩. Om du har en bugg rapport för denna manualsida, se ⟨ https://savannah.gnu.org/bugs/?group=findutils ⟩. Den här sidan var hämtat från projektets uppströms Git-förråd ⟨git://git.savannah.gnu.org/findutils.git⟩ den 2023-06-23. (På den tiden, datumet för det senaste begåvningen som hittades i förvaret var 2023-05-23.)