Linux FIND-kommando med exempel

Vet du hur många filer som finns i en nyinstallation av Linux ? Om du använder PopOS! Linuxdistribution som ett exempel, det finns över 31 000 filer. Det är innan du börjar skapa några dokument, lagra musik, ladda ner PDF(PDFs) -filer eller organisera bilder.

På grund av detta blir det en utmaning att hitta rätt fil eller mapp i Linux när du behöver det. (Linux)I den här artikeln kommer du att lära dig hur du använder kommandot Linux FIND , och vi kommer att ge dig alla exempel vi kan.

Linux FIND kommandosyntax(Linux FIND Command Syntax)

Syntax hänvisar till hur ord, eller kommandon, sätts ihop. Precis(Just) som en vanlig mening kan bli nonsens genom att bara blanda orden, kan kommandon misslyckas om de inte används i rätt syntax.

hitta [sökväg] [villkor] [åtgärder](find [path] [conditions] [actions])

Så här betyder det:

find – initierar sökverktyget(Find) i Linux

väg(path ) – vart ska man leta

villkor(conditions ) – argument du vill använda för sökningen

åtgärder(actions ) – vad du vill göra med resultatet

Ett enkelt exempel med alla tre ser ut som:

hitta . -namn file-sample.rtf -print(find . -name file-sample.rtf -print)

Som du gissat kommer detta att hitta filnamnet file-sample.rtf

Punktsökvägen ( . ) talar om för hitta att leta i den aktuella katalogen och alla kataloger i den. 

Villkoret -name säger till find att hämta filen med det specifika namnet.

Åtgärden -print säger till FIND att visa resultaten på skärmen.

Perioden och -print är standardinställningar för find-kommandot. Så det kommer fortfarande att göra samma sak om du inte använder dem. Så, find -name file-sample.rtf kommer att ge dig samma resultat.

Linux HITTA I en annan katalog(Linux FIND In Another Directory)

Du kan söka i en annan katalog än den du befinner dig i. Ange bara(Just) sökvägen till katalogen efter FIND . Om du är i roten och du vet att filen finns någonstans i home/user du skulle använda:

find home/user -name file-sample.rtf

Det är fortfarande en rekursiv sökning, så den går igenom varje katalog under användare(user) .

Linux FIND Sök i flera kataloger(Linux FIND Search Multiple Directories)

Om du ville söka i flera kataloger samtidigt, lista dem bara i kommandot, avgränsade med ett mellanslag.

find /lib /var /bin -name file-sample.rtf

Linux FIND utan rekursion eller begränsande rekursion(Linux FIND with No Recursion or Limiting Recursion)

Om du använde kommandot FIND ovan på rotnivån, skulle det titta igenom varje katalog på systemet. Så om du bara vill hålla dig till den aktuella katalogen, använd alternativet -maxdepth . Siffran efter -maxdepth talar om Hitta hur djupt du ska gå innan du stannar. 

Att använda -maxdepth 1 betyder bara denna katalog. 

hitta -name file-sample.rtf -maxdepth 1(find -name file-sample.rtf -maxdepth 1)

Att använda -maxdepth 2 eller högre siffra innebär att gå så många nivåer djupare.

hitta -maxdepth 5 -namn fil-sample.rtf(find -maxdepth 5 -name file-sample.rtf)

Linux FIND Wildcard Exempel(Linux FIND Wildcard Example)

Kommandot FIND använder asterisken ( * ) som jokertecken. Använd den för någon del av namnet som du är osäker på. Det kan användas mer än en gång i namnet. Utan filtypen som en del av filnamnet kommer resultaten även att innehålla kataloger som matchar.

find home/user -name file*sample*

Linux HITTA efter typ Exempel(Linux FIND by Type Example)

För att bara söka efter en fil eller en katalog, använd alternativet -type och lämplig deskriptor. Det finns några, men fil- och katalogen är vanligast:

f – fil

d – katalog

b – blockeringsanordning

c – teckenenhet

l – symbolisk länk

s – uttag

find home/user -name file*sample* -type d

Linux FIND skiftlägesokänsligt exempel(Linux FIND Case Insensitive Example)

Till skillnad från Windows bryr (Windows)Linux sig om huruvida en bokstav är stor eller gemen. Så om du vill att den ska söka efter både File-Sample.rtf och file-sample.rtf, använd alternativet -iname .

find home/user -iname File-Sample.rtf

Linux HITTA Flera filer Exempel(Linux FIND Several Files Example)

Låt oss säga att du ville hitta .rtf- och .html-versionerna av en fil. Det kan göras i ett kommando med -o (eller) operatorn. I vissa distributioner kan du behöva sätta namnen inom parentes, som ( -name file-sample.rtf -o -name file-sample.html )

find home/user -name file-sample.rtf -o -name file-sample.html

Linux HITTA filer som inte matchar ett namn(Linux FIND Files That Don’t Match a Name)

Du kanske vet att det finns .html - versionen av en fil, men inte om det finns andra. Du kan filtrera bort .html- versionen från sökningen med alternativet -not .

find home/user -name file-sample* -not -name *.html

Linux HITTA utan felresultat(Linux FIND Without Error Results)

I exemplet med fynd utan rekursion, lägg märke till att den listade varje katalog som den inte kunde söka i och det korrekta resultatet. Det är irriterande. Låt oss stoppa det från att visa alla dessa " Permission denied"-kataloger. Kombinera det med ett annat Linux-terminalkommando(Linux terminal command) , grep. Du kan också använda Hitta(Find) med grep för att hitta filer med specifika ord i dem(find files with specific words in them) .

find -maxdepth 5 -name file-sample.rtf 2>&1 | grep -v “Permission denied”

Låt oss dela upp 2>&1 .

2 – representerar stderr som är en förkortning för standardfel. 

1 – representerar stdout som är en förkortning för standardutgång

> – betyder att omdirigera den utdata som är till vänster om den till vad som än är till höger om den.

& – betyder att sätta ihop.

2>&1 betyder att ta standardfelen och omdirigera dem, och sedan sätta ihop dem med standardutgången till en utgång.

Låt oss nu titta på | grep -v “Permission denied” .

| (kallas en pipe) – säger åt Linux att mata resultaten av det som är till vänster om det till det som är till höger om det. Det matas till kommandot grep.

grep – är ett textsökningsverktyg. 

-v – säger åt grep att söka efter allt som inte matchar text till vänster om -v. I det här fallet säger det till grep att bara hitta något som inte innehåller texten eller strängen " Permission denied." Så grep kommer bara att visa dig resultaten du letar efter och eventuella fel som inte matchar " Permission denied."

Exempel på Linux HITTA efter behörigheter(Linux FIND by Permissions Example)

För att använda detta väl måste du lära dig Linux-behörigheter(learn Linux permissions)

Exempelfilerna har alla behörigheterna 664, förutom en med behörigheterna 775. Använd alternativet -perm för att hitta den.

find Documents/ -name file-sample* -type f -perm 775

Linux HITTA efter storlek Exempel(Linux FIND by Size Example)

Att hitta filer efter storlek är praktiskt för att få de stora filerna att fylla upp din hårddisk. Använd alternativet -size, önskad storlek och ett av följande suffix. Om inget suffix används, är -storlek som standard b . För att hitta filer som är lika med och större än en viss storlek, sätt plustecknet (+) framför storleken.

M – Megabyte

G – Gigabyte

k – Kilobyte

b – block (512 byte – standard)

c – byte

w – ord (två byte tillsammans)

find -size +500k

Linux HITTA av ägare(Linux FIND by Owner)

Det finns två sätt att hitta filer efter ägare. Den ena är av en ägares användarnamn och den andra är av användarens grupp. För att hitta efter användarnamn, använd alternativet -user , följt av användarnamnet. För att hitta efter användargrupp, använd -grupp(-group ) följt av gruppnamnet.

hitta -användargruppnamn(find -user groupname ) eller hitta -användarnamn(find -user username)

Linux FIND-filer efter senast ändrade exempel(Linux FIND Files by Last Modified Example)

För att hitta filer som har ändrats eller redigerats under de senaste X antal dagarna, använd -mtime följt av ett nummer. Att sätta ett minustecken ( ) framför numret kommer att hitta allt som har ändrats inom så många dagar innan nu. Ett plustecken ( + ) betyder inom så många dagar innan nu. 

find -name “file-sample*” -mtime +5 (greater than 5 days ago)

find -name “file-sample*” -mtime -5 (less than 5 days ago)

För att hitta efter senast ändrad i minuter, använd alternativet -mmin följt av antalet minuter. Använd + och – som ovan.

find -name “file-sample*” -mmin -5

find -name “file-sample*” -mmin +5

Linux FIND-filer efter senast åtkomna tid Exempel(Linux FIND Files by Last Accessed TIme Example)

Alternativet som används för att hitta filer baserat på när de senast öppnades är -atime för dagar och -amin för minuter. Följ det med antalet dagar eller minuter för att gå tillbaka och använd tecknet + och – som större än och mindre än.

find -name “file-sample*” -atime -5

find -name “file-sample* -amin -5

Kombinera FIND med andra Linux-kommandon(Combine FIND with Other Linux Commands)

Det finns ett exempel ovan på att använda find med kommandot grep, och du kan använda det med många andra. Du kan se att användningen av hitta och andra kommandon kan vara mycket kraftfull och en enorm tidsbesparande. Föreställ dig(Imagine) att behöva ta bort ett gäng av en viss typ av fil. Istället för att söka runt i filutforskaren, skapa bara rätt kommando, så är det gjort på några sekunder. Hur kommer du att använda kommandot find nu?



About the author

Jag är en mjukvaruingenjör med över 10 års erfarenhet av att bygga och underhålla Apple Mac-datorer, iOS-enheter och webbläsare Google Chrome. Min erfarenhet inkluderar utveckling, underhåll och drift av mjukvaruprodukter från grunden eller att bidra till projekt med öppen källkod. Jag har också haft möjlighet att arbeta med en mängd olika hårdvaruprojekt – från att fixa trasiga skärmar på sjukhus till att designa och implementera nya funktioner för iPhone. På min fritid tycker jag om att spela favoritspel, läsa böcker, laga middag med min familj eller umgås med vänner.



Related posts