Skip to main content

Använda Linux och Unix Command hitta

Suspense: Blue Eyes / You'll Never See Me Again / Hunting Trip (Juni 2026)

Suspense: Blue Eyes / You'll Never See Me Again / Hunting Trip (Juni 2026)
Anonim

Linux och Unix-kommandot hitta utför en sökning efter filer i en kataloghierarki.

Syntax för hitta kommando:

hitta sökväg … uttryck

Beskrivning

Den här handboken dokumenterar GNU-versionen av hitta . Kommandot hitta söker i katalogträdet rotat i varje given filnamn genom att utvärdera det givna uttrycket från vänster till höger, enligt prioritetsreglerna (se avsnittet om operatörer nedan) tills resultatet är känt. med andra ord är vänster sida felaktig för och verksamhet, sant för eller , när hitta flyttas till nästa filnamn.

Det första argumentet som börjar med:

  • -
  • ( eller),
  • !

anses vara början på uttrycket; några argument innan det är sökvägar, och några argument efter det är resten av uttrycket. Om inga vägar ges, används den aktuella katalogen. Om inget uttryck ges ges uttrycket -skriva ut är använd.

De hitta kommandoutgångar med status 0 om alla filer behandlas framgångsrikt, större än 0 om fel uppstår.

uttryck

Uttrycket består av alternativ (som påverkar den övergripande funktionen istället för bearbetningen av en specifik fil, och återkommer alltid sant), tester (som returnerar ett sant eller falskt värde) och åtgärder (som har biverkningar och returnerar en sann eller falskt värde), alla separerade av operatörer. Uttrycket -och antas där operatören utelämnas. Om uttrycket inte innehåller några andra åtgärder än -beskära då -skriva ut utförs på alla filer för vilka uttrycket är sant.

alternativ

Alla alternativ returneras alltid sant. De får alltid effekt, snarare än att behandlas först när deras plats i uttrycket är uppnått. Av tydlighetsskäl är det därför bäst att placera dem i början av uttrycket.

-daystart Mätningstider (för -amin, -atim, -cmin, -tim, -mmin, och -mtime ) från början av idag snarare än från 24 timmar sedan.
-djup Behandla varje katalogs innehåll före katalogen själv.
-Följ Dereference symboliska länkar. innebär -noleaf .
-hjälp eller --hjälp Skriv ut en sammanfattning av kommandoradsanvändningen av hitta och avsluta.
-Max djup siffra Nedstigning högst antal nivåer (ett icke-negativt heltal) av kataloger under kommandoradsargumenten. Uttrycket -maxdepth 0 innebär att endast testerna och åtgärderna tillämpas på kommandoradsargumenten.
-mindepth nummer Använd inte några tester eller åtgärder på nivåer som är mindre än antalet (ett icke-negativt heltal). Uttrycket -mindepth 1 betyder bearbeta alla filer utom kommandoradsargumenten.
-montera Stig inte ned kataloger på andra filsystem. Ett alternativt namn för -xdev , för kompatibilitet med några andra versioner av hitta .
-noleaf Optimera inte genom att anta att katalogerna innehåller 2 färre underkataloger än deras hårdlänktal. *
-version eller --version Skriv ut hitta versionsnummer och utgång.
-xdev Stig inte ned kataloger på andra filsystem.

* Det här alternativet behövs när du söker efter filsystem som inte följer Unix-kataloglänkskonventionen, t.ex. CD-ROM- eller MS-DOS-filsystem eller AFS-volymmonteringspunkter. Varje katalog på ett normalt Unix-filsystem har minst 2 hårda länkar: dess namn och dess. (period) inträde. Dessutom har dess underkataloger (om någon). post som är länkad till den katalogen.

När hitta undersöker en katalog, efter att den har ställt in två färre underkataloger än katalogens länkantal vet den att resten av posterna i katalogen är icke-kataloger ( blad filer i katalogträdet). Om endast filernas namn behöver granskas behöver man inte registrera dem. Detta ger en signifikant ökning av sökhastigheten.

tester

Numeriska argument kan anges som:

+ n För större än n.
-n För mindre än n.
n För exakt n.
-amin n Filen var senast tillgänglig n minuter sedan.
-anewer fil Filen användes senast senast än fil modifierades. -avgift påverkas av -följa endast om -följer kommer före -levereras på kommandoraden.
-atid n Filen var senast tillgänglig n * 24 timmar sedan.
-cmin n Filens status ändrades senast n minuter sedan.
-känd fil Filens status ändrades senast senast än filen ändrades.- cnewer påverkas av -Följ bara om -Följ kommer före -cnewer på kommandoraden.
-tid n Filens status ändrades senast n * 24 timmar sedan.
-tömma Filen är tom och är antingen en vanlig fil eller en katalog.
-falsk Alltid fel.
-fstyp typ Filen är på ett filsystem av specificerad typ. De giltiga filsystemstyperna varierar mellan olika versioner av Unix; En ofullständig lista över filsystemtyper som accepteras i någon version av Unix eller annan är: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Du kan använda -printf med% F-direktivet för att se typerna av dina filsystem.
-gid n Filens numeriska grupp ID är n .
-grupp gname Filen tillhör gruppen gname (numerisk grupp ID tillåten).
-namn mönster Liksom -namn, men matchen är obesegrad.
-iname mönster Tycka om -namn , men matchen är okänslig för fallet. Till exempel mönstren fo * och F ?? matcha filnamnen foo , FOO , foo , foo , etc.
-num n Filen har inodnummer n .
-path mönster Tycka om -väg , men matchen är okänslig för fallet.
-iregex mönster Liksom -regex, men matchen är obesegrad.
-länkar n Filen har n länkar.
-lname mönster Filen är en symbolisk länk vars innehåll matchar skalmönstret. Metatyperna behandlas inte / eller . speciellt.
-minne n Filens data ändrades senast n minuter sedan.
-mtime n Filens data ändrades senast n * 24 timmar sedan.
-namn mönster Bas av filnamn (sökvägen med ledande kataloger borttagen) matchar skalmönstret. Metateklarna (*, ?, och ) matchar inte en . i början av basnamnet. För att ignorera en katalog och filerna under den, använd -beskära ; se ett exempel i beskrivningen av -väg .
-nyckla fil Filen ändrades senast än fil . Uttrycket -nyare påverkas av -Följ bara om -Följ kommer före -nyare på kommandoraden.
-nouser Ingen användare motsvarar filens numeriska användar-ID.
-nogroup Ingen grupp motsvarar filens numeriska grupp-ID.
-väg mönster Filnamnet matchar skalmönstret mönster . Metatyperna behandlas inte / eller . speciellt; så, till exempel,hitta. -väg "./sr*sc kommer skriva ut en post för en katalog som heter ./src/misc (om en finns). För att ignorera ett helt katalogt träd, använd -beskära snarare än att kontrollera varje fil i trädet. Till exempel, för att hoppa över katalogen src / emacs och alla filer och kataloger under den och skriva ut namnen på de andra filerna som finns, gör något så här:hitta. -väg './src/emacs' -prune -o -print
-perm mode Filens tillståndsbit är exakt läge (oktal eller symbolisk). Symboliska lägen använder läget 0 som utgångspunkt.
-perm -mod Alla tillstånd bitar läge är inställda för filen.
-perm + -läget Vilken som helst av tillståndet bitar läge är inställda för filen.
-regex mönster Filnamnet matchar regelbundet uttryck mönster . Detta är en match på hela banan, inte en sökning. Till exempel, för att matcha en fil med namnet ./fubar3, kan du använda det reguljära uttrycket .*bar. eller . * B. * 3, men inte b. * r3.
-size n bckw Filanvändning n enheter av rymden. Enheterna är som standard 512 byte-block eller om b följer n , byte om c följer n , kilobyte om k följer n , eller 2-byte ord om w följer n . Storleken räknas inte indirekta block, men det räknar inte block i glesa filer som inte är faktiskt tilldelade.
-Sann Alltid sant.
-typ c Filen är av typen c :
b Block (buffrad) speciell
c Karaktär (obuffrad) speciell
d Directory
p Namngivna rör (FIFO)
f Regelbunden fil
l Symbolisk länk
s Uttag
D dörr (Solaris)
-uid n Filens numeriska användar-ID är n .
-använd n Filen var senast tillgänglig n dagar efter att statusen ändrades senast.
-user uname Filen ägs av användaren du namnger (numeriskt användar ID tillåtet).
-typ c Samma som -typ om inte filen är en symbolisk länk. För symboliska länkar: om -Följ har inte givits, sant om filen är en länk till en fil av typen c ; om -Följ har givits, sant om c är l. Med andra ord, för symboliska länkar, -xtype kontrollerar typen av filen som -typ kontrollerar inte

Åtgärder

exec kommando ;

Kör kommando ; sant om 0-status returneras. Alla följande argument tillhitta tas till vara argument för kommandot tills ett argument bestående av `; ' stöter på. Strängen `{} 'ersätts med det aktuella filnamnet som behandlas överallt det förekommer i argumenten till kommandot, inte bara i argument där det är ensamt, som i vissa versioner avhitta. Båda dessa konstruktioner kan behöva räddas (med en ` ') eller citerad för att skydda dem från expansion av skalet. Kommandot körs i startkatalogen.

-fls fil

Sann; gillar-men men skriver till fil gillar -fprint.

-fprint fil

Sann; skriv ut det fullständiga filnamnet i filen fil . Om fil existerar inte närhitta körs, den är skapad; om den existerar är den avkortad. Filnamnen `` / dev / stdout '' och `` / dev / stderr '' hanteras speciellt; De refererar till standardutgången för utgång och standardfel respektive.

-fprint0 fil

Sann; gillar -print0 men skriv till fil gillar -fprint.

-fprintf fil formatera

Sann; gillar -printf men skriv till fil gillar -fprint.

-ok kommando ;

Gilla -exec men fråga användaren först (på standardinmatningen); Om svaret inte börjar med "y" eller "Y", kör inte kommandot och returnera falskt.

-skriva ut

Sann; skriv ut det fullständiga filnamnet på standardutmatningen, följt av en ny linje.

-print0

Sann; skriv ut det fullständiga filnamnet på standardutmatningen, följt av ett nolltecken.Detta gör det möjligt att filnamn som innehåller nya linjer tolkas korrekt av program som behandlarhitta produktion.

-printf formatera

Sann; skriva ut formatera på standardutgåvan, tolkningen ` 'flyger och`%' direktiv. Fältbredder och precisioner kan specificeras som med `printf 'C-funktionen. Till skillnad från -print, lägger inte -printf en ny linje i slutet av strängen. Utrymmena och direktiven är:

en

Alarmklocka.

b

Backspace.

c

Sluta skriva ut från detta format direkt och spola utmatningen.

f

Formmatning.

n

Ny linje.

r

Vagnretur.

t

Horisontell flik.

v

Vertikal flik.

\

En bokstavlig backslash (` ').

NNN

Tecknet vars ASCII-kod är NNN (oktal).

Ett ` 'tecken följt av någon annan karaktär behandlas som en vanlig karaktär, så de båda skrivs ut.

%%

Ett bokstavligt procenttal.

%en

Filens senaste åtkomsttid i formatet som returneras av funktionen C `ctime.

%EN k

Filens senaste åtkomsttid i det format som anges av k , som är antingen `@ 'eller ett direktiv för C` strftime'-funktionen. De möjliga värdena för k listas nedan; vissa av dem kanske inte är tillgängliga på alla system, på grund av skillnader i "strftime" mellan system.

@

sekunder sedan 1 januari 1970, 00:00 GMT.

Tidfält:

H

timme (00..23)

jag

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..61)

T

tid, 24 timmar (hh: mm: ss)

X

lokalens tidsrepresentation (H: M: S)

Z

tidszon (t.ex. EDT), eller ingenting om ingen tidszon är bestämbar

Datumfält:

en

landets förkortade veckodag namn (Sun..Sat)

en

landets fullständiga veckodag, variabel längd (söndag, lördag)

b

landets förkortade månad namn (Jan .. Dec)

B

landets fullständiga månad namn, variabel längd (januari .. december)

c

Lokalens datum och tid (lör nov 04 12:02:33 EST 1989)

d

dag i månaden (01..31)

D

datum (mm / dd / yy)

h

samma som b

j

årstid (001..366)

m

månad (01..12)

U

vecka antal år med söndag som första veckodag (00..53)

w

veckodag (0..6)

W

vecka antal år med måndag som första veckodag (00..53)

x

Lokalens datumrepresentation (mm / dd / yy)

y

sista två siffrorna i år (00..99)

Y

år (1970 …)

% b

Filens storlek i 512-byte-block (avrundad).

% c

Filens senaste statusändringstid i formatet som returneras av funktionen C `ctime.

% C k

Filens senaste statusändringstid i det format som anges av k , vilket är detsamma som för% A.

% d

Filens djup i katalogträdet; 0 betyder att filen är ett kommandoradsargument.

% f

Filnamn med några ledande kataloger borttagna (endast det sista elementet).

% F

Typ av filsystemet filen är på; detta värde kan användas för -fstype.

% g

Filens gruppnamn eller numeriskt grupp-ID om gruppen inte har något namn.

% G

Filens numeriska grupp-ID.

% h

Ledande kataloger över filens namn (alla utom det sista elementet).

% H

Kommandoradsargument under vilken fil hittades.

%jag

Filens inodnummer (i decimal).

% k

Filens storlek i 1K-block (avrundad).

% l

Objekt av symbolisk länk (tom sträng om filen inte är en symbolisk länk).

% m

Filens tillstånd bitar (i oktal).

% n

Antal hårda länkar till filen.

% p

Filens namn.

% P

Filnamnet med namnet på kommandoradsargumentet som det hittades för att ta bort.

% s

Filens storlek i byte.

% t

Filens senaste ändringstid i formatet som returneras av funktionen C `ctime.

% T k

Filens senaste ändringstid i det format som anges av k , vilket är detsamma som för% A.

% u

Filens användarnamn eller numeriskt användarnamn om användaren inte har något namn.

% U

Filens numeriska användar-ID.

Ett `% 'tecken följt av något annat tecken kasseras (men det andra tecknet skrivs ut).

-beskära

Om -dept inte ges, sant; Stig inte ned den aktuella katalogen.Om -dept ges, falskt; ingen effekt.

-Är

Sann; lista aktuell fil i `ls-dils 'format på standardutmatning. Blockantalet är 1K-block, såvida inte miljövariabeln POSIXLY_CORRECT är inställd, i vilket fall 512-byte-block används.

operatörer

Listad i efterföljande ordning:

( expr )

Tvinga företräde.

! expr

Sant om expr är falskt.

-inte expr

Samma som ! expr .

expr1 expr2

Och (underförstått); uttr2 utvärderas inte om uttr1 är falskt.

uttr1 -en uttr2

Samma som expr1 expr2 .

uttr1 -och uttr2

Samma som expr1 expr2 .

uttr1 -o uttr2

Eller; uttr2 utvärderas inte om uttr1 är sant.

uttr1 -eller uttr2

Samma som uttr1 -o uttr2 .

uttr1 , uttr2

Lista; både uttr1 och uttr2 utvärderas alltid. Värdet av uttr1 kasseras värdet på listan är värdet av uttr2 .

exempel

hitta / hem-användare joe

Hitta varje fil under katalogen / hem som ägs av användarjoe.

hitta / usr-namn * stat

Hitta varje fil under katalogen / usr som slutar i ".stat".

hitta / var / spool -time +60

Hitta varje fil under katalogen / var / spool som ändrades för mer än 60 dagar sedan.

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

Hitta filer som heterkärna i eller under katalogen/ tmp och radera dem.Observera att detta kommer att fungera felaktigt om det finns några filnamn som innehåller nya linjer, enkla eller dubbla citat eller mellanslag.

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

Hitta filer som heterkärna i eller under katalogen/ tmp och ta bort dem, bearbeta filnamn på ett sådant sätt att fil- eller katalognamn som innehåller enkla eller dubbla citat, mellanslag eller nya linjer hanteras korrekt. De-namn testet kommer före-typ test för att undvika att behöva ringastat (2) på alla filer.

hitta. -typ f -exec-fil '{}' ;

Kör `fil 'på varje fil i eller under den aktuella katalogen. Observera att fästena är inneslutna i enkla citattecken för att skydda dem mot tolkning som skalsskriftinterpunktion. Semikolonen skyddas på samma sätt med hjälp av en backslash, men ";" kunde ha använts i det fallet också.

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

Korsa filsystemet bara en gång, lista setuid-filer och kataloger i/root/suid.txt och stora filer till/root/big.txt.

hitta $ HOME -mtime 0

Sök efter filer i din hemkatalog som har ändrats under de senaste tjugofyra timmarna. Det här kommandot fungerar på så sätt att tiden sedan varje fil senast ändrats delas med 24 timmar och resten återkastas. Det betyder att matcha-mtime

0, en fil måste ändras tidigare som är mindre än 24 timmar sedan.

hitta. -perm 664

Sök efter filer som har läs- och skrivbehörighet för deras ägare och grupp, men vilka andra användare kan läsa men inte skriva till. Filer som uppfyller dessa kriterier men har andra behörighetsbitar (till exempel om någon kan exekvera filen) kommer inte att matchas.

hitta. -perm -664

Sök efter filer som har läs- och skrivbehörighet för deras ägare och grupp, och vilka andra användare kan läsa, utan hänsyn till närvaron av extra behörighetsbitar (till exempel körbar bit). Detta kommer att matcha en fil som har läge 0777, till exempel.

hitta. -perm / 222

Sök efter filer som är skrivbara av någon (deras ägare, eller deras grupp eller någon annan).

hitta. -perm / 220 hitta. -perm / u + w, g + w hitta. -perm / u = w, g = w

Alla tre kommandona gör samma sak, men den första använder den oktala representationen för filläge och de andra två använder den symboliska formen. Dessa kommandon alla söka efter filer som är skrivbara av antingen deras ägare eller deras grupp. Filerna behöver inte skrivas av både ägaren och gruppen som ska matchas. antingen kommer att göra.

hitta. -perm -220 hitta. -perm -g + w, u + w

Båda dessa kommandon gör samma sak; söka efter filer som är skrivbara av både deras ägare och deras grupp.

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

Dessa två kommandon både söker efter filer som är läsbara för alla (-perm -444 eller -perm -a + r), har åtminstone en skrivbitssats (-perm / 222 eller -perm / a + w) men kan inte köras för någon (! -perm / 111 och! -perm / a + x)

Viktig: Använd man kommando ( % man ) för att se hur ett kommando används på din dator.