Find

Från Wiki.linux.se
Version från den 1 september 2024 kl. 18.49 av Admin (diskussion | bidrag)
Hoppa till navigering Hoppa till sök

FIND(1)

Allmänna kommandomanualer FIND(1)

NAMN

  • find - sök efter filer i en kataloghierarki

SYNTAX

  • find [-H] [-L] [-P] [-D debugval] [-O nivå] [startpunkt...] [uttryck]

BESKRIVNING

  • Denna manual sida dokumenterar GNU-versionen av find. GNU find söker igenom katalogträdet med start från varje angiven startpunkt genom att utvärdera det givna uttrycket från vänster till höger, enligt reglerna för prioritetsordning (se avsnitt OPERATORER), tills resultatet är känt (den vänstra sidan är falsk för och-operationer, sann för eller), vid vilken punkt find går vidare till nästa filnamn. Om ingen startpunkt anges, antas '.'.
  • Om du använder find i en miljö där säkerheten är viktig (till exempel om du använder den för att söka i kataloger som är skrivbara av andra användare), bör du läsa kapitlet "Säkerhetsöverväganden" i dokumentationen för findutils, som heter Finding Files och kommer med findutils. Detta dokument innehåller också mycket mer detaljer och diskussion än denna manual, så det kan vara en mer användbar informationskälla.

ALTERNATIV

  • Alternativen -H, -L och -P styr behandlingen av symboliska länkar. Kommandoradsargument efter dessa tas att vara namn på filer eller kataloger som ska undersökas, upp till det första argumentet som börjar med '-', eller argumentet '(' eller '!'. Detta argument och eventuella efterföljande argument tas att vara uttrycket som beskriver vad som ska sökas efter. Om inga sökvägar anges, används den aktuella katalogen. Om inget uttryck anges, används uttrycket -print (men du bör troligen överväga att använda -print0 istället).
  • Denna manual sida talar om "alternativ" inom uttryckslistan. Dessa alternativ styr beteendet hos find men anges omedelbart efter det sista sökvägsnamnet. De fem "verkliga" alternativen -H, -L, -P, -D och -O måste dyka upp före det första sökvägsnamnet, om de alls ska användas. En dubbel bindestreck -- kan teoretiskt användas för att signalera att återstående argument inte är alternativ, men detta fungerar egentligen inte på grund av sättet find avgör slutet på de efterföljande sökvägsargumenten: det gör det genom att läsa tills ett uttrycksargument kommer (vilket också börjar med ett '-'). Om ett sökvägsargument skulle börja med ett '-', skulle find behandla det som ett uttrycksargument istället. Därför är det generellt säkrare att förprefixera jokertecken eller tveksamma sökvägsnamn med antingen './' eller använda absoluta sökvägsnamn som börjar med '/'. Alternativt är det generellt säkert, även om det inte är portabelt, att använda GNU-alternativet -files0-from för att skicka godtyckliga startpunkter till find.
  • -P Följer aldrig symboliska länkar. Detta är standardbeteendet. När find undersöker eller skriver ut information om filer, och filen är en symbolisk länk, ska informationen som används tas från den symboliska länkens egna egenskaper.
  • -L Följer symboliska länkar. När find undersöker eller skriver ut information om filer, ska informationen som används tas från egenskaperna hos filen som länken pekar på, inte från länken själv (såvida det inte är en bruten symbolisk länk eller find inte kan undersöka filen som länken pekar på). Användning av detta alternativ implicerar -noleaf. Om du senare använder -P-alternativet kommer -noleaf fortfarande att vara i kraft. Om -L är i kraft och find upptäcker en symbolisk länk till en underkatalog under sin sökning, kommer underkatalogen som pekas ut av den symboliska länken att undersökas.
  • -H Följer inte symboliska länkar, förutom vid bearbetning av kommandoradsargument. När find undersöker eller skriver ut information om filer, ska informationen som används tas från den symboliska länkens egna egenskaper. Det enda undantaget från detta beteende är när en fil som specificeras på kommandoraden är en symbolisk länk och länken kan lösas. I den situationen tas informationen från det som länken pekar på (dvs. länken följs). Informationen om länken själv används som en reserv om filen som länken pekar på inte kan undersökas. Om -H är i kraft och en av sökvägarna som specificeras på kommandoraden är en symbolisk länk till en katalog, kommer innehållet i den katalogen att undersökas (även om förstås -maxdepth 0 skulle förhindra detta).
  • Om fler än ett av -H, -L och -P specificeras, åsidosätter varje de andra; den sista som dyker upp på kommandoraden tar effekt. Eftersom det är standarden bör -P-alternativet anses vara i kraft såvida inte antingen -H eller -L specificeras.
  • GNU find gör ofta filundersökningar under bearbetningen av själva kommandoraden, innan någon sökning har börjat. Dessa alternativ påverkar också hur dessa argument behandlas. Specifikt finns det ett antal tester som jämför filer som listas på kommandoraden mot en fil vi för närvarande överväger. I varje fall kommer den specificerade filen på kommandoraden att ha undersökts och vissa av dess egenskaper kommer att ha sparats. Om den namngivna filen faktiskt är en symbolisk länk och -P-alternativet är i kraft (eller om varken -H eller -L specificerades), kommer informationen som används för jämförelsen att tas från den symboliska länkens egenskaper. Annars tas den från egenskaperna hos filen som länken pekar på. Om find inte kan följa länken (till exempel på grund av att det saknar tillräckliga behörigheter eller om länken pekar på en obefintlig fil) kommer egenskaperna hos länken själv att användas.
  • När -H- eller -L-alternativen är i kraft, kommer alla symboliska länkar som anges som argument för -newer att lösas upp, och tidsstämpeln tas från filen som den symboliska länken pekar på. Samma övervägande gäller för -newerXY, -anewer och -cnewer.
  • -follow alternativet har en liknande effekt som -L, även om det träder i kraft vid den punkt där det dyker upp (dvs. om -L inte används men -follow är, kommer alla symboliska länkar som dyker upp efter -follow på kommandoraden att lösas upp, och de före det kommer inte att göra det).
  • -D debugval Skriv ut diagnostisk information; detta kan vara till hjälp för att diagnostisera problem med varför find inte gör vad du vill. Listan över debug-alternativ ska vara kommaseparerad. Kompatibiliteten för debug-alternativen garanteras inte mellan versioner av findutils. För en komplett lista över giltiga debug-alternativ, se utdata från find -D help. Giltiga debug-alternativ inkluderar:
    • exec Visa diagnostisk information relaterad till -exec, -execdir, -ok och -okdir
    • opt Skriver ut diagnostisk information relaterad till optimeringen av uttrycksträdet; se -O alternativet.
    • rates Skriver ut en sammanfattning som visar hur ofta varje predikat lyckades eller misslyckades.
    • search Navigera katalogträdet verbalt.
    • stat Skriv ut meddelanden när filer undersöks med stat- och lstat-systemanropen. Find-programmet försöker minimera sådana anrop.
    • tree Visa uttrycksträdet i dess ursprungliga och optimerade form.
    • all Aktivera alla andra debug-alternativ (utom help).
    • help Förklara debug-alternativen.
  • -O nivå Aktiverar frågeoptimering. Find-programmet omordnar tester för att påskynda utförandet samtidigt som den övergripande effekten bevaras; det vill säga att predikat med sidoeffekter inte omordnas i förhållande till varandra. De optimeringar som utförs på varje optimeringsnivå är som följer.
    • 0 Motsvarar optimeringsnivå 1.
    • 1 Detta är standardoptimeringsnivån och motsvarar det traditionella beteendet. Uttryck omordnas så att tester baserade enbart på filnamn (till exempel -name och -regex) utförs först.
    • 2 Eventuella -type eller -xtype tester utförs efter eventuella tester baserade enbart på filnamn, men före några tester som kräver information från inode. På många moderna versioner av Unix returneras filtyper av readdir(), så dessa predikat är snabbare att utvärdera än predikat som först måste stat-filen. Om du använder -fstype FOO-predikatet och specificerar ett filsystemtyp FOO som inte är känt (dvs. finns i `/etc/mtab') när find startar, motsvarar det predikatet -false.
    • 3 På denna optimeringsnivå aktiveras den fullständiga kostnadsbaserade frågeoptimeraren. Ordningen på tester modifieras så att billiga (dvs. snabba) tester utförs först och dyrare utförs senare om det behövs. Inom varje kostnadsband utvärderas predikat tidigare eller senare beroende på om de sannolikt kommer att lyckas eller inte. För -o utvärderas predikat som sannolikt kommer att lyckas tidigare, och för -a utvärderas predikat som sannolikt kommer att misslyckas tidigare.
  • Den kostnadsbaserade optimeraren har en fast idé om hur sannolikt det är att ett givet test lyckas. I vissa fall tar sannolikheten hänsyn till den specifika naturen av testet (till exempel antas -type f vara mer sannolikt att lyckas än -type c). Den kostnadsbaserade optimeraren utvärderas för närvarande. Om det inte faktiskt förbättrar find-prestandan, kommer den att tas bort igen. Däremot kan optimeringar som visar sig vara pålitliga, robusta och effektiva aktiveras vid lägre optimeringsnivåer över tid. Standardbeteendet (dvs. optimeringsnivå 1) kommer dock inte att ändras i 4.3.x-versionen. Findutils-testserien kör alla tester på find vid varje optimeringsnivå och säkerställer att resultatet är detsamma.
    • Omordningen av operationer som utförs av den kostnadsbaserade optimeraren kan resultera i användar-synlig beteendeförändring. Till exempel är predikaten -readable och -empty känsliga för omordning. Om de körs i ordningen -empty -readable kommer ett felmeddelande att utfärdas för oläsliga kataloger. Om de körs i ordningen -readable -empty kommer inget felmeddelande att utfärdas. Detta är anledningen till att sådan omordning av operationer inte utförs vid standardoptimeringsnivån.

UTTRYCK

  • Den del av kommandoraden efter listan över startpunkter är uttrycket. Detta är en typ av frågespecifikation som beskriver hur vi matchar filer och vad vi gör med de filer som matchades. Ett uttryck består av en sekvens av saker:
    • Test Test returnerar ett sant eller falskt värde, vanligtvis på grundval av någon egenskap hos en fil vi överväger. Testet -empty är till exempel sant endast när den aktuella filen är tom.
    • Åtgärder Åtgärder har sidoeffekter (till exempel att skriva ut något på standardutgången) och returnerar antingen sant eller falskt, vanligtvis baserat på om de är framgångsrika eller inte. Åtgärden -print skriver till exempel ut namnet på den aktuella filen på standardutgången.
    • Globala alternativ Globala alternativ påverkar utförandet av tester och åtgärder som specificerats på någon del av kommandoraden. Globala alternativ returnerar alltid sant. Alternativet -depth gör till exempel att find traverserar filsystemet i en djup-först ordning.
    • Positionella alternativ Positionella alternativ påverkar endast tester eller åtgärder som följer dem. Positionella alternativ returnerar alltid sant. Alternativet -regextype är till exempel positionellt, och specificerar den reguljära uttrycks dialekten för reguljära uttryck som förekommer senare på kommandoraden.
    • Operatorer Operatorer sammanfogar de andra objekten inom uttrycket. De inkluderar till exempel -o (vilket betyder logiskt ELLER) och -a (vilket betyder logiskt OCH). Där en operator saknas, antas -a.
  • Åtgärden -print utförs på alla filer för vilka hela uttrycket är sant, om det inte innehåller en åtgärd förutom -prune eller -quit. Å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 den implicerar -depth).

POSITIONELLA ALTERNATIV

  • Positionella alternativ returnerar alltid sant. De påverkar endast tester som förekommer senare på kommandoraden.
    • -daystart Mäter tider (för -amin, -atime, -cmin, -ctime, -mmin och -mtime) från början av idag snarare än från 24 timmar sedan. Detta alternativ påverkar endast tester som visas senare på kommandoraden.
    • -follow Avrådes från att använda; använd istället -L-alternativet. Avföljer symboliska länkar. Implicerar -noleaf. Alternativet -follow påverkar endast de tester som visas efter det på kommandoraden. Om inte -H eller -L-alternativet har specificerats, ändrar positionen för -follow-alternativet beteendet hos -newer-predikatet; alla filer som listas som argument för -newer kommer att avföljas om de är symboliska länkar. Samma övervägande gäller för -newerXY, -anewer och -cnewer. På samma sätt kommer predikatet -type alltid att matcha mot typen av filen som en symbolisk länk pekar på snarare än länken själv. Att använda -follow gör att predikaten -lname och -ilname alltid returnerar falskt.
    • -regextype typ Ändrar den reguljära uttryckssyntax som förstås av -regex och -iregex tester som förekommer senare på kommandoraden. För att se vilka reguljära uttryckstyper som är kända, använd -regextype help. Texinfo-dokumentationen (se SE OCKSÅ) förklarar betydelsen av och skillnaderna mellan de olika typerna av reguljära uttryck. Om du inte använder detta alternativ, beter sig find som om reguljärt uttryckstypen emacs hade specificerats.
    • -warn, -nowarn Slå på eller av varningsmeddelanden. Dessa varningar gäller endast för kommandoradsanvändning, inte för några tillstånd som find kan stöta på när den söker kataloger. Standardbeteendet motsvarar -warn om standardinmatningen är en tty, och till -nowarn annars. Om ett varningsmeddelande som rör kommandoradsanvändning produceras påverkas inte find's exitstatus. Om miljövariabeln POSIXLY_CORRECT är inställd, och -warn också används, är 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 förekommer tidigare på kommandoraden. För att undvika förvirring bör globala alternativ specificeras på kommandoraden efter listan med startpunkter, precis före det första testet, positionella alternativet eller åtgärden. Om du specificerar ett globalt alternativ på något annat ställe, kommer find att ge ett varningsmeddelande som förklarar att detta kan vara förvirrande.
  • De globala alternativen förekommer efter listan med startpunkter, och är därför inte samma typ av alternativ som -L, till exempel.
    • -d En synonym för -depth, för kompatibilitet med FreeBSD, NetBSD, MacOS X och OpenBSD.
    • -depth Bearbeta varje katalogs innehåll före själva katalogen. Åtgärden -delete implicerar också -depth.
    • -files0-from fil Läs startpunkterna från fil istället för att få dem på kommandoraden. I kontrast till de kända begränsningarna för att skicka startpunkter via argument på kommandoraden, nämligen begränsningen av antalet filnamn, och den inneboende tvetydigheten hos filnamn som kolliderar med alternativnamn, möjliggör användning av detta alternativ att säkert överföra ett godtyckligt antal startpunkter till find.


Sidslut

Det här är en maskinöversättning av linux kommando manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webserver.