Windows.  Virus.  Anteckningsböcker.  Internet.  kontor.  Verktyg.  Förare

Om du ofta arbetar på kommandoraden på en dator eller på en server där det inte finns någon grafiskt skal, förr eller senare kommer du att möta uppgiften att söka efter filer. Lyckligtvis har Linux redan ett inbyggt kommando som låter dig hitta en fil på systemet.

Idag kommer vi att prata om att använda kommandot find - tro mig, du bör lära dig hur du arbetar med detta kraftfulla och bekväma verktyg.

Hur man använder kommandot find

Enkelt uttryckt är den grundläggande syntaxen för kommandot find som följer:

Hitta /path options filnamn

Låt oss utforska lagets möjligheter

Hitta en fil efter namn

Den första parametern är sökvägen. Om du inte har någon aning om var filen kan gömma sig, sätt / istället för sökvägen - det räcker. Att söka på hela disken kan dock ta ganska lång tid, och om du vet var filen kan vara, ange mappen där du vill börja söka (till exempel ~ för att söka i användarens hemmapp).

Låt oss nu gå vidare till sökalternativen. Det finns två alternativ för att söka efter en fil med namn:

  • namn - skiftlägeskänslig sökning efter filnamnet
  • iname - skiftlägesokänslig sökning efter ett filnamn

Man måste komma ihåg att i Linux är fallet med filnamnet viktigt, och om du till exempel behöver hitta filen Ubuntu.txt, kommer följande kommando inte att ge några resultat:

Hitta / -namn ubuntu.txt

Men du kan använda kommandot iname och göra en skiftlägesokänslig sökning:

Hitta / -iname ubuntu.txt

Sök efter typ

Med kommandot find kan du söka efter mer än bara filer. Här är de typer av beskrivningar som stöds av sökning:

  • f - vanlig fil
  • d - katalog
  • l - symbolisk länk
  • c - tecken enhet
  • b - blockeringsanordning

Till exempel, för att söka efter alla kataloger i den aktuella användarens hemkatalog som börjar med "config", kör följande kommando:

Hitta ~ -typ d -namn config*

Utmatning av sökresultat till en fil

En bekväm funktion att mata ut resultatet av ett kommando till en fil kommer att vara extremt användbar om det finns många sökresultat eller om det finns ett behov av att arbeta med dem senare. Till exempel för att hålla en lista över alla hittade konfigurationsfiler att arkivera conf_search, kör följande kommando:

Hitta /etc -typ f -name “*.conf” > conf_search

Hitta filer efter storlek

Detta är en mycket användbar parameter när diskutrymmet håller på att ta slut och du måste förstå var det har tagit vägen. Till exempel, för att hitta filer som är större än 1000 MB, kör följande kommando:

Hitta / -storlek +1000M

Du kan använda följande förkortningar:

  • c - byte
  • k - kilobyte
  • M - megabyte
  • G - gigabyte
  • b - block på 512 byte

Det här är bara några sätt att använda ett kraftfullt team. Fler sätt finns i manualen genom att köra kommandot

Den här artikeln är ett utdrag ur boken Linux&Unix - Shell-programmering», David Tensley.

Jag gjorde några ändringar i all hast, om du märker stavfel, skriv i kommentarerna.

Ofta under arbetets gång blir det nödvändigt att söka efter filer med vissa egenskaper, såsom åtkomsträttigheter, storlek, typ, etc. Kommandot find är ett mångsidigt sökverktyg: det låter dig söka efter filer och kataloger, visa alla kataloger på systemet eller bara den aktuella katalogen.

Det här kapitlet täcker följande ämnen relaterade till att använda kommandot find:

Hitta kommandoalternativ;

Exempel på användning av de olika alternativen för kommandot find;

Exempel delning xargs och hitta kommandon.

Möjligheterna med kommandot find är omfattande, och listan med alternativ som erbjuds är också stor. Det här kapitlet beskriver de viktigaste av dem. Hitta kommandot kan till och med söka på diskar NFS (nätverksfil Systemet- nätverksfilsystem), naturligtvis med lämpliga behörigheter. I liknande fall kommandot körs vanligtvis i bakgrunden eftersom det är tidskrävande att bläddra i katalogträdet. Det allmänna formatet för find-kommandot är:

hitta sökväg -alternativ

Var sökvägsnamnär katalogen från vilken sökningen ska startas. Tecknet '.' används för att beteckna den aktuella katalogen, tecknet / är rotkatalogen och tecknet "~" skrivs i variabeln $HEM den aktuella användarens hemkatalog.

2.1. hitta kommandoalternativ

Låt oss uppehålla oss vid beskrivningen av huvudalternativen för sökkommandot.

Namn Sök efter filer vars namn matchar det angivna mönstret

Skriv ut Skriv de fullständiga namnen på hittade filer till standardutdata.

Perm Sök efter filer som har det angivna åtkomstläget inställt

Prune Används för att förhindra att find-kommandot körs rekursiv sökning av redan hittat sökväg; om alternativet -depth anges ignoreras alternativet -prune

Användarsökning efter filer som ägs av den angivna användaren

Grupp Sök efter filer som tillhör en viss grupp

Mtime -n+n Sök efter filer vars innehåll har ändrats mindre än (-) eller mer än (+) n dagar sedan; det finns också alternativ -atime och -ctime , som låter dig söka efter filer efter datumet för den senaste läsningen respektive datumet för den senaste ändringen av filattributen

Nogroup Sök efter filer som tillhör en icke-existerande grupp, för vilken det med andra ord inte finns någon post i filen /etc/groups

Nouser Sök efter filer som ägs av en icke-existerande användare, för vilka det med andra ord inte finns någon post i filen /etc/passwd

nyare fil Sök efter filer som skapades senare än den angivna filen

Typ Söker efter filer av en specifik typ, nämligen: b- speciell blockfil; d- katalog; Med- en specialteckenfil; sid- namngiven rör; l- symbolisk länk; s- uttag; f- vanlig fil

storlek n Sök efter filer vars storlek är n enheter; följande måttenheter är möjliga: b- Blockstorlek 512 byte (standardinställning); Med- byte; k- kilobyte (1024 byte); w- två-byte ord

Djup När du söker efter filer, genomsöks innehållet i den aktuella katalogen först, och först därefter kontrolleras posten som motsvarar själva katalogen

F stype Sök efter filer som finns i ett filsystem av en viss typ; vanligtvis lagras relevant information i en fil /etc/fstab, som innehåller data om filsystemen som används på den lokala datorn

Montera Söker endast efter filer i det aktuella filsystemet; analogen till detta alternativ är alternativet -xdev -exec Kör ett tolkkommando skal för alla upptäckta filer; körbara kommandon har formatkommandot ( ) ;

(notera mellanrummet mellan symbolerna () och 😉

Ok Liknar -exec , men tillfrågas innan kommandot körs

2.1.1. Alternativ -namn

När du arbetar med find-kommandot används alternativet -name oftast. Det måste följas av ett filnamnsmönster inom citattecken.
Om du vill hitta alla filer med filändelsen . Text i din hemkatalog, ange tecknet som sökväg. Namnet på hemkatalogen kommer att extraheras från variabeln $HEM.

$ hitta ~ -namn "*.txt" -print

För att hitta alla filer med tillägg .Text finns i den aktuella katalogen, använd följande kommando:

$ hitta. -namn "*.txt" -print

För att hitta i den aktuella katalogen alla filer vars namn innehåller minst ett tecken i versaler, ange följande kommando:

$ hitta. -namn "*" -tryck

Hitta i katalogen /etc filer vars namn börjar med " värd", tillåter kommandot

$ hitta /etc -name "hoat*" -print

Sök i hemkatalogen efter alla filer med tillägg .Text, samt filer vars namn börjar med en punkt produceras av kommandot

$ hitta ~ -namn "*.txt" -print -o -namn ".*" -print

Alternativ -Oär notationen för den logiska ELLER-operationen. Om det tillämpas, kommer förutom filer med vanliga namn, filer vars namn börjar med en prick att hittas.

Om du vill få en lista över alla filer på systemet som inte har ett tillägg, kör följande kommando, men var försiktig, eftersom det kan sakta ner systemet avsevärt:

$ hitta / -namn "*" -print

Följande visar hur du hittar alla filer vars namn först följs av gemener följt av två siffror och ett tillägg .Text(Till exempel, ax37.xt):

$ hitta. -namn » [a-x] [a-x] . txt" -skriv ut

2.1.2. Alternativ -perm

Alternativet -perm låter dig hitta filer med det angivna åtkomstläget. Till exempel för att söka efter filer med åtkomstläge 755 (de kan ses och köras av alla användare, men endast ägaren har rätt att skriva) du bör använda följande kommando:

$ hitta. -perm 755 -tryck

Genom att prefixa lägesvärdet med ett bindestreck söker man efter filer som har alla de angivna behörighetsbitarna inställda, och de återstående bitarna ignoreras. Till exempel letar följande kommando efter filer som andra användare har full åtkomst till:

$ hitta. -perm -007 -tryck

Om lägesvärdet föregås av ett plustecken, utförs sökningen efter filer som har minst en av de angivna behörighetsbitarna inställda, medan de återstående bitarna ignoreras.

2.1.3. -alternativ för beskärning

När du inte vill söka i en viss katalog, använd alternativet -prune. Det fungerar som en indikation på att sluta söka på det aktuella sökvägsnamnet. Om sökvägen pekar på en katalog, kommer kommandot find inte att gå in i den. Om alternativet -depth finns, ignoreras alternativet -prune.

Följande kommando söker igenom den aktuella katalogen utan att gå in i en underkatalog /bin:

$ hitta. -namn "bin" -prune -o -print

2.1.4. alternativ -user och --nouser

För att hitta filer som ägs av en specifik användare, ange alternativet -user i find-kommandot tillsammans med användarnamnet. Till exempel genom att söka i hemkatalogen efter filer som ägs av användaren dave görs med följande kommando:

$ hitta ~ -användare dave -print

Katalogsökning /etc användarägda filer uucp, kör följande kommando:

$ hitta /etc -uaer uucp -print

Alternativet -nouser gör det möjligt att söka efter filer som ägs av icke-existerande användare. När du använder den görs en sökning efter filer vars ägare inte har en post i filen. /etc/passwd. Du behöver inte ange ett specifikt användarnamn: kommandot find gör allt nödvändigt arbete åt dig. För att hitta alla filer som ägs av icke-existerande användare och som finns i en katalog /Hem, utfärda följande kommando:

$ hitta /home -nouaer -print

2.1.5. Alternativ -grupp och -nogrupp

Alternativen -group och -nogroup är samma som alternativen -user-nouser/appar för alla filer som ägs av gruppanvändare accts:

$ hitta /arra -grupp accta -print

Följande kommando söker igenom hela systemet efter filer som tillhör icke-existerande grupper:

$ hitta / -nogroup -print

2.1.6. Alternativ -mtime

Alternativet -mtime ska användas när du söker efter filer som du kommer åt X dagar sedan. Om alternativargumentet är försett med ett "-"-tecken, kommer filer som inte har nåtts under en tid att väljas. X dagar. Argumentet med '+'-tecknet leder till motsatt resultat - urvalet av filer som har öppnats under den senaste X dagar.

För att hitta alla filer som inte har uppdaterats under de senaste fem dagarna, använd följande kommando:

$ hitta / -mtime -5 -print

Följande är kommandot för att söka i en katalog /var/admin filer som har uppdaterats under de senaste tre dagarna:

$ hitta /var/adm -mtime +3 -print

2.1.7. Alternativ -nyare

Om du behöver hitta filer som var åtkomliga mellan uppdateringar av två givna filer, använd alternativet -newer. Det allmänna formatet för dess tillämpning är följande:

nyare gammal_fil! -nyare ny fil

Skylt ' ! ’ är den logiska negationsoperatorn. Det betyder: hitta filer som är nyare än gammal_fil men äldre än ny fil.

Låt oss säga att vi har två filer som uppdaterades med lite över två dagars mellanrum:

Rwxr-xr-x 1 rotrot 92 apr 18 11:18 age.awk
-rwxrwxr-x 1 rotrot 1054 20 april 19:37 belts.awk

För att hitta alla filer uppdaterade senare än age.awk, men innan bälten.awk, kör följande kommando (med alternativet -exec beskrivs nedan):

$ hitta. -nyare ålder.awk! -newer belts.awk -exec Är -1 ();
-rwxrwxr-x 1 rotrot 62 apr 18 11:32 ./who.awk
-rwxrwxr-x 1 rotrot 49 apr 18 12:05 ./group.awk
-rw-r-r- 1 rotrot 201 apr 20 19:30 ./grade2.txt
-rwxrwxr-x 1 rotrot 1054 20 april 19:37 ./belts.awk

Men vad händer om du behöver hitta filer som skapats inom, till exempel, de senaste två timmarna, och du inte har en fil skapad för exakt två timmar sedan att jämföra med? Skapa en sådan fil! För detta ändamål används kommandot touch -t, som skapar en fil med en given tidsstämpel i formatet MMDChhmm (månad-dag-timmar-minuter). Till exempel:

$ touch -t 05042140 dstamp
$ ls -1 dstamp
-rw-r-r- 1 dave admin 0 maj 4 21:40 dstamp

Resultatet blir en fil vars skapandedatum är 4 maj, skapandetiden är -21:40 (det antas att den aktuella tiden är 23:40). Du kan nu använda kommandot find med alternativet -newer för att hitta alla filer som har uppdaterats under de senaste två timmarna:

$ hitta. -nyare datamp -tryck

2.1.8. Alternativ -typ

OS UNIX Och linux Stöd Olika typer filer. Att hitta filer av önskad typ görs med hjälp av kommandot find med alternativet -type. Till exempel för att hitta alla underkataloger i en katalog /etc använd detta kommando:

$ hitta /etc -typ d -print

För att lista alla filer men inte kataloger, kör följande kommando:

$ hitta. ! -typ d -print

Följande är kommandot som är att hitta alla symboliska länkar i en katalog /etc.

$ hitta /etc -typ 1 -print

2.1.9. Alternativ -storlek

Under sökningen anges filstorleken med alternativet -size N, Var N- Filstorlek i block om 512 byte. Möjliga argument har följande betydelser: +N- sök efter filer större än den angivna storleken, -N- mindre än vad som anges N- är lika med den givna. Om argumentet dessutom innehåller symbolen Med, då anses storleken ges i byte, inte block, och om tecknet k- i kilobyte. För att söka efter filer som är större än 1 MB, använd kommandot

$ hitta. -aize -flOOK -tryck

Följande kommando söker i katalogen /home/apache filer som är exakt 100 byte stora:

$ hitta /home/apache -sixe 100s -print

För att söka efter filer som är större än 10 block (5120 byte), använd följande kommando:

$ hitta. -storlek +10 -tryck

2.1.10. Alternativ - djupalternativ

Alternativet -depth låter dig organisera sökningen på ett sådant sätt att först alla filer i den aktuella katalogen (och rekursivt alla dess underkataloger) kontrolleras, och endast i slutet - inmatningen av själva katalogen. Det här alternativet används ofta när man skapar en lista med filer som ska arkiveras på band med kommandot cpio eller tar, eftersom i det här fallet katalogbilden skrivs till bandet först och först därefter ställs behörigheter till den in. Detta tillåter användaren att arkivera de kataloger som han inte har skrivbehörighet för.
Följande kommando listar alla filer och underkataloger i den aktuella katalogen:

$ hitta. -namn "*" -tryck -o -namn ".*" -tryck -djup

Så här kan resultatet av hennes arbete se ut:

./.Xdefaults ./.bash_logout ./.bash_profile ./.bashrc ./.bash_nistory ./file ./Dir/filel ./Dir/file2 ./Dir/file3 ./Dir/Subdir/file4 ./Dir/Dirdir

2.1.11. -monteringsalternativ

Sökning efter filer endast på det aktuella filsystemet, exklusive andra monterade filsystem, tillhandahålls av -mount-alternativet i find-kommandot. Följande exempel söker efter alla filer med filtillägget .xc i den aktuella diskpartitionen:

$ hitta / -namn "*.xc" -mount -print

2.1.12. Sök efter filer med efterföljande arkivering med kommandot cpio

Kommandot cpio används främst för att skriva filer till och läsa från band. Mycket ofta används det i samband med find-kommandot, som tar emot en lista med filer från det över ett rör.

Så här skrivs kataloginnehåll till band /etc, /Hem Och /apps:

$ cd /
$ hitta etc hem appa -djup -tryck | cpio -ov > dev/rmtO

Alternativ -O cpio-kommandot ställer in läget för att skriva filer till band. Alternativ -v (mångordig- verbalt läge) talar om för cpio-kommandot att rapportera varje fil den bearbetar.

Observera att det inledande '/' saknas i katalognamnen. Detta ställer in de relativa sökvägarna för de arkiverade katalogerna, som, när du läser filer från arkivet senare, gör att de kan återskapas i valfri del av operativsystemet, och inte bara i rotkatalogen.

2.1.13. Alternativ -exec och -ok

Anta att du har hittat de filer du behöver och vill utföra vissa åtgärder på dem. I det här fallet behöver du alternativet -exec (vissa system tillåter endast ls eller ls -1 kommandon med alternativet -exec). Många användare använder alternativet -exec för att hitta gamla filer som ska raderas. Jag rekommenderar att du kör ls först istället för rm för att se till att find hittar exakt de filer du vill ta bort.

Efter alternativet -exec, ange kommandot som ska köras, följt av klammerparenteser, ett mellanslag, ett omvänt snedstreck och slutligen ett semikolon. Tänk på ett exempel:

$ hitta. -typ f -exec Xa-1 ();
-rwxr-xr-x 10 rothjul 1222 4 januari 1993 ./sbin/C80
-rwxr-xr-x 10 rothjul 1222 4 jan 1993 ./sbin/Normal
-rwxr-xr-x 10 rothjul 1222 4 januari 1993 ./sbin/Rewid

Detta söker efter normala filer, som listas på skärmen med kommandot ls -1.

För att hitta filer som inte har uppdaterats i en katalog /loggar inom de senaste fem dagarna och ta bort dem, kör följande kommando:

$ hitta /log" -typ f -mtime +5 -exec rm () ;

Försiktighet måste iakttas när du flyttar och raderar filer. Använd alternativet -ok, som låter dig köra mv- och rm-kommandon säkert läge(innan nästa fil bearbetas skickas en begäran om bekräftelse). I följande exempel hittar kommandot find filer med filtillägget .logga, och om en fil är mer än fem dagar gammal raderar den den, men ber dig först bekräfta denna åtgärd:

$ hitta. -namn "*.LOG" -mtid +5 -ok rm() ;
< rm … ./nets.LOG >? på

För att radera en fil, skriv in , och för att förhindra denna åtgärd - n.

2.1.14. Ytterligare exempel på sökkommandon

Låt oss titta på några fler exempel för att illustrera användningen av kommandot find. Följande visar hur du hittar alla filer i din hemkatalog:

$ hitta ~ -print

Hitta alla filer som har en bit inställd SUID, tillåter följande kommando:

$ hitta. -typ f -perm +4000 -tryck

För att få en lista över tomma filer, använd följande kommando:

$ hitta / -typ f -storlek 0 -exec Är -1 () ;

På ett av mina system skapas en systemrevisionslogg varje dag. Ett nummer läggs till i namnet på loggfilen, vilket gör det möjligt att omedelbart avgöra vilken fil som skapades senare och vilken som skapades tidigare. Till exempel filversioner admin.log numrerad sekventiellt: admin.log.001, admin.log.002 etc. Följande är kommandot find som tar bort alla filer admin.log skapade för mer än sju dagar sedan:

$ hitta /logs -name 'admin.log.1 -atima +7 exec rm () ;

2.2. xargs kommando

Med alternativet -exec skickar find-kommandot alla hittade filer till det angivna kommandot, som bearbetas på en gång. Tyvärr, i vissa system, längden kommandoradär begränsad, så vid bearbetning av ett stort antal filer kan ett felmeddelande genereras som vanligtvis lyder: "För många argument"(för många argument) eller Argumenten för långa(för stor lista med argument). I den här situationen kommer kommandot xargs till undsättning. filer som tas emot från find-kommandot, bearbetar det i delar och inte alla på en gång.

Tänk på ett exempel där find-kommandot returnerar en lista över alla filer på systemet, och xargs-kommandot kör filkommandot på dem, vilket kontrollerar typen av varje fil:

$ hitta / -typ f -print I xarge.file
/etc/protocols: Engelsk text /etc/securetty: ASCII-text

Följande är ett exempel som visar hur man söker efter dumpfiler vars namn ekokommandot placerar i filen /tmp/core.log.

$ hitta / -namn kärna -print | xarge echo > /tmp/core.log

I följande exempel, i katalogen /apps/revision söker efter alla filer som andra användare har full åtkomst till. chmod kommando tar bort skrivbehörighet för dem:

$ hitta /appe/audit -perm -7 -print | xarge chmod o-w

Vi kompletterar vår lista med ett exempel där kommandot grep letar efter filer som innehåller ordet " enhet«:

$ hitta / -typ f -print | xarge grep "enhet"

2.3. Slutsats

Hitta kommandot är ett utmärkt verktyg för att hitta olika filer med hjälp av en mängd olika kriterier. Tack vare alternativet -exec, såväl som kommandot xargs, kan de hittade filerna bearbetas av nästan alla systemkommandon.

När du arbetar i vilket operativsystem som helst, ibland finns det ett behov av att använda verktyg för snabbsökning en eller annan fil. Detta är också relevant för Linux, så allt kommer att diskuteras nedan. möjliga sätt sök filer i detta operativsystem. Kommer att presenteras som verktyg filhanterare, såväl som de kommandon som används i "Terminal".

Om du behöver ställa in många sökparametrar för att hitta den önskade filen, då kommandot hitta oersättlig. Innan du överväger alla dess varianter är det värt att gå igenom syntaxen och alternativen. Den har följande syntax:

hitta vägalternativ

Var vägär katalogen där sökningen kommer att ske. Det finns tre huvudvägalternativ:

  • / - sök i rotkatalogen och intilliggande kataloger;
  • ~ - sök i hemkatalogen;
  • ./ - sök i katalogen där användaren för närvarande befinner sig.

Du kan också ange sökvägen direkt till själva katalogen, där filen ska finnas.

alternativ hitta väldigt många, och det är tack vare dem som det går att förverkliga flexibel konfiguration sök genom att ställa in nödvändiga variabler:

  • -namn- göra en sökning baserat på namnet på det element som söks efter;
  • -användare- sök efter filer som tillhör en specifik användare;
  • -grupp- sök efter en specifik grupp av användare;
  • -perm- visa filer med angivet åtkomstläge;
  • -storlek- sökning baserat på objektets storlek;
  • -mtid +n -n- sök efter filer som har ändrats mer än ( +n) eller mindre ( -n) dagar sedan;
  • -typ- sök efter filer av en viss typ.

Det finns också många typer av nödvändiga element. Här är deras lista:

  • b- block;
  • f- vanlig;
  • sid- namngiven rör;
  • d- katalog;
  • l- länk;
  • s- uttag;
  • c- symboliskt.

Efter en detaljerad analys av syntaxen och alternativen för kommandot hitta du kan gå direkt till illustrativa exempel. På grund av överflöd av alternativ för att använda kommandot kommer exempel inte att ges för alla variabler, utan endast för de mest använda.

Metod 1: Sök på namn (alternativ -namn)

Oftast använder användare möjligheten att söka i systemet. -namn, så det är där vi börjar. Låt oss titta på några exempel.

Sök efter förlängning

Låt oss säga att du behöver hitta en fil med tillägget ".xlsx", som finns i katalogen Dropbox. För att göra detta måste du använda följande kommando:

hitta /home/user/Dropbox -namn "*.xlsx" -print

Från dess syntax kan vi säga att sökningen utförs i katalogen Dropbox ("/hem/användare/Dropbox"), och det önskade objektet måste vara med tillägget ".xlsx". Asterisken indikerar att sökningen kommer att utföras på alla filer med detta tillägg, oavsett deras namn. "-skriva ut" indikerar att sökresultaten kommer att visas.

Sök efter filnamn

Du vill till exempel söka i en katalog "/Hem" fil med namnet "klumpar", men dess förlängning är okänd. I det här fallet måste du göra följande:

hitta ~ -namn "lumpics*" -print

Som du kan se är symbolen som används här «~» , vilket innebär att sökningen kommer att ske i hemkatalogen. Efter alternativ "-namn" namnet på den sökta filen anges ( "klumpar*"). En asterisk i slutet betyder att sökningen endast kommer att göras med namn, utan hänsyn till tillägget.

Sök efter första bokstaven i namnet

Om du bara kommer ihåg den första bokstaven i filnamnet finns det en speciell kommandosyntax som hjälper dig att hitta den. Till exempel vill du hitta en fil som börjar med bokstaven från "g" innan "l", och du vet inte vilken katalog den finns i. Sedan måste du köra följande kommando:

hitta / -namn "*" -print

Att döma av tecknet "/" som kommer omedelbart efter huvudkommandot, kommer sökningen att utföras från rotkatalogen, det vill säga genom hela systemet. Nästa, del «*» betyder att sökordet börjar med en viss bokstav. I vårt fall från "g" innan "l".

Förresten, om du känner till filtillägget, så efter symbolen «*» du kan specificera det. Till exempel måste du hitta samma fil, men du vet att den har filtillägget ".odt". Sedan kan du använda detta kommando:

hitta / -namn "*.odt" -print

Metod 2: Sök efter åtkomstläge (alternativ -perm)

Ibland behöver du hitta ett objekt vars namn du inte vet, men du vet vilket åtkomstläge det har. Sedan måste du tillämpa alternativet "-perm".

Att använda det är ganska enkelt, du behöver bara ange sökplatsen och åtkomstläget. Här är ett exempel på ett sådant kommando:

hitta ~ -perm 775 -tryck

Det vill säga, sökningen utförs i hempartitionen och de sökta objekten kommer att ha åtkomst 775 . Du kan också föreskriva symbolen "-" före detta nummer, då kommer de hittade objekten att ha tillståndsbitar från noll till det angivna värdet.

Metod 3: Sök efter användare eller grupp (alternativ -användare och -grupp)

Varje operativsystem har användare och grupper. Om du vill hitta ett objekt som tillhör någon av dessa kategorier kan du använda alternativet "-användare" eller "-grupp", respektive.

Att hitta en fil efter dess användarnamn

Till exempel måste du hitta i katalogen Dropbox fil Lampor, men du vet inte vad det heter, du vet bara att det tillhör användaren "användare". Sedan måste du köra följande kommando:

hitta /home/user/Dropbox -användare-skriva ut

I det här kommandot angav du den nödvändiga katalogen ( /home/user/Dropbox), angav att du måste leta efter en fil som ägs av användaren ( -användare), och angav vilken användare den här filen tillhör ( användare).

Söker efter en fil med dess gruppnamn

Att söka efter en fil som tillhör en viss grupp är lika enkelt - du behöver bara ändra alternativet "-användare" per alternativ "-grupp" och ange namnet på denna grupp:

hitta / -grupp gäst -print

Det vill säga du angav att du vill hitta en fil i systemet som tillhör gruppen "gäst". Sökningen kommer att ske i hela systemet, detta indikeras med symbolen «/» .

Metod 4: Sök efter en fil efter dess typ (alternativ -typ)

Att hitta ett visst element i Linux av en viss typ är ganska enkelt, du behöver bara ange lämpligt alternativ ( -typ) och ange typen. I början av artikeln listades alla typbeteckningar som kan användas för sökning.

Till exempel vill du hitta alla blockfiler i din hemkatalog. I det här fallet kommer ditt kommando att se ut så här:

hitta ~ -typ b -print

Följaktligen angav du att du söker efter filtyp, vilket framgår av alternativet "-typ", och bestämde sedan dess typ genom att sätta blockfilsymbolen - "b".

På samma sätt kan du visa alla kataloger i önskad katalog genom att ange symbolen i kommandot "d":

hitta /home/user -typ d -print

Metod 5: Sök efter en fil efter storlek (alternativ -storlek)

Om allt du vet om en fil är dess storlek, kan även det vara tillräckligt för att hitta den. Till exempel, om du vill hitta en 120 MB fil i en viss katalog, gör följande:

hitta /home/user/Dropbox -storlek 120M -print

Som du kan se hittades filen vi behöver. Men om du inte vet vilken katalog den finns i kan du söka i hela systemet genom att ange rotkatalogen i början av kommandot:

hitta / -storlek 120M -tryck

Om du vet den ungefärliga storleken på filen finns det ett speciellt kommando för det här fallet. Du måste skriva in "Terminal" samma, men innan du anger filstorleken sätt ett tecken «-» (om du vill hitta filer som är mindre än den angivna storleken) eller «+» (om storleken på filen du letar efter är större än den angivna). Här är ett exempel på ett sådant kommando:

hitta /home/user/Dropbox +100M -print

Metod 6: Sök efter en fil efter ändringsdatum (alternativ -mtime)

Det finns tillfällen då det är bäst att söka efter en fil vid det datum då den ändrades. På Linux görs detta med alternativet "-mtime". Att använda det är ganska enkelt, låt oss titta på allt med ett exempel.

Låt oss säga i en mapp "Bilder" vi måste hitta objekt som har ändrats under de senaste 15 dagarna. Här är vad du ska skriva i "Terminal":

hitta /home/user/Images -mtime -15 -print

Som du kan se visar det här alternativet inte bara filer som har ändrats under den angivna perioden, utan också mappar. Det fungerar också i motsatt riktning - du kan hitta objekt som har ändrats efter den angivna perioden. För att göra detta måste du ange ett tecken före det digitala värdet «+» :

hitta /home/user/Images -mtime +10 -print

GUI

Det grafiska gränssnittet gör livet mycket lättare för nybörjare som precis har installerat Linux distribution. Den här metoden sökning är mycket lik den i Windows, även om den kanske inte ger alla fördelar som den erbjuder "Terminal". Men först till kvarn. Så låt oss titta på hur man gör en filsökning i Linux med hjälp av GUI system.

Metod 1: Sök igenom systemmenyn

Nu kommer vi att överväga ett sätt att söka efter filer via Linux-systemmenyn. Stegen kommer att utföras i Ubuntu 16.04 LTS-distributionen, men instruktionerna är gemensamma för alla.

Find-kommandot är ett av de mest användbara och viktigaste kommandona på Linux.
Den är installerad som standard och är tillgänglig på nästan alla Linux-versioner. Linux lagrar allt som filer, och det är självklart värt att veta hur man hittar dessa filer.

Med kommandot find kan du söka efter filer av intresse med hjälp av en rad sökkriterier. Kriterier kan anges antingen tillsammans eller separat, och sedan utföra åtgärder med resultatet. I den här handledningen kommer vi att beskriva kommandot find med användningsexempel.

1) Lista alla filer i den aktuella katalogen och dess underkataloger

För att lista alla filer i den aktuella katalogen och dess underkataloger kan vi använda:

Alternativt kan vi också använda 'hitta . ', vilket ger dig samma resultat.

2) Hitta alla filer och kataloger i din nuvarande arbetskatalog

Om du bara behöver hitta kataloger kan du använda:

$ hitta. -typ d

För att bara hitta filer, inte kataloger:

$ hitta. -typ f

3) Lista alla filer i en specifik katalog

Så här hittar du filer i en specifik katalogtyp:

$ hitta /root

Detta kommando kommer att leta efter alla filer i /rotkatalogen.

4) Hitta filen efter namn i katalogen

För att söka efter en fil med namn i en specifik katalog, skriv:

$ hitta /root -namn "linuxtechi.txt"

Detta kommando kommer att leta efter filen linuxtechi.txt i /rootkatalogen. Vi hittar också alla filer med filtillägget .txt:

$ hitta /root -namn "*.txt"

5) Hitta filen i flera kataloger

För att söka efter filer i flera kataloger, skriv:

$ hitta /root /etc -name "linuxtechi.txt"

Med detta kommando kan vi leta efter filen linuxtechi.txt i katalogerna /root & /etc.

Med detta kommando kan vi hitta filen linuxtechi.txt i katalogerna /root och /etc.

6) Hitta filen efter namn, skiftlägesokänslig

Sök efter filer på ett skiftlägesokänsligt sätt med -iname:

$ hitta /root -iname "Linuxtechi.txt"

Som ett resultat kommer du att få alla filer som heter linuxtechi.txt. I det här fallet kan det finnas flera filer, eftersom linuxtechi.txt kommer att vara lika med LINUXTECHI.txt .

7) Hitta alla andra filtyper än den som nämns

Låt oss säga att vi vill hitta alla andra filer än en viss filtyp. För att uppnå detta anger du:

$ hitta /root -not -name "*.txt"

8) Hitta filer med många funktioner

Vi kan kombinera mer än ett villkor när vi söker efter filer. Anta att vi behöver filer med filtilläggen .txt och .html:

$ hitta. -regex ".*\.\(txt\|html\)$"

9) Hitta filer med OR-villkor

Vi kan också kombinera flera sökkriterier, vilket leder till en sökning efter filer baserat på att ett av villkoren är uppfyllda. Detta görs med OR-operatorn:

$ hitta -namn "*.txt" -o -namn "linuxtechi*"

10) Hitta filer baserat på behörigheter

För att hitta filer med specifika behörigheter använd -perm:

$ hitta /root -typ f -perm 0777

11) Hitta alla dolda filer

För sökning dolda filer i katalogen skriv in:

$ hitta ~ -typ f-namn ".*"

12) Hitta alla filer med SGID

För att söka efter filer med SGID-bitar, kör kommandot:

$ hitta. -perm /g=s

13) Hitta alla filer med SUID

För att söka efter filer med SUID-bitar, använd:

$ hitta. -perm /u=s

14) Hitta alla körbara filer

Endast för sökning körbara filer stiga på:

$ hitta. -perm /a=x

15) Hitta skrivskyddade filer

Dessutom kan du hitta skrivskyddade filer med kommandot find:

$ hitta /root -perm /u=r

16) Hitta alla användarfiler

För att söka efter filer för en specifik användare, använd följande kommando:

$ hitta. -användare linuxtech

17) Hitta alla gruppfiler

För att söka efter filer för en specifik grupp, använd:

$ hitta. -grupp apache

18) Hitta alla filer av en viss storlek

Om vi ​​vill söka vars storlek vi känner till kan vi använda -size:

$ hitta / -storlek -2M

19) Hitta alla filer i olika storlekar

Om vi ​​letar efter en fil vars storlek vi inte vet, men vi vet dess ungefärliga storlek, eller om vi bara vill välja filer i ett visst storleksintervall, kan vi ange:

$ hitta / -storlek +2M -storlek -5M

Du kan använda sökkommandona när du söker efter filer som är tyngre än till exempel 50 mb:

$ hitta / -storlek +50M

20) Hitta filer som ändrats för N dagar sedan

Till exempel vill vi hitta alla filer som har ändrats för 8 dagar sedan. Vi kan åstadkomma det genom att använda alternativet '-mtime' i find-kommandot

Till exempel kan vi hitta alla filer som redigerats för 8 dagar sedan. Detta görs med kommandot -mtime:

$ hitta / -mtid 8

21) Hitta filer som du fick åtkomst till för N dagar sedan

Du kan hitta filer som inkluderades för 8 dagar sedan med -atime:

$ hitta / -atime 8

22) Hitta alla tomma filer och kataloger

För att hitta alla tomma filer i systemet, skriv in:

$ hitta / -typ f -tom

Och för att visa deras kataloger:

$ hitta ~/ -typ d -tom

23) Hitta de största och minsta filerna

För att visa en lista över de största eller minsta filerna använder vi find i kombination med sort , och om vi behöver lista 3 "most-most", så använder vi även head .

För att visa tre filer från den aktuella katalogen, skriv in:

$ hitta. -typ f -exec ls -s () \; | sortera -n -r | huvud-3

På samma sätt kan vi lista de minsta filerna i den aktuella katalogen:

$ hitta. -typ f -exec ls -s () \; | sortera-n | huvud-3

24) Hitta alla filer med en specifik behörighet och ändra den till 644 (eller något annat)

Kommandot find kan erbjuda avancerade användningsfall. Till exempel kan vi ändra alla behörigheter för 644 vissa filer till 777. För att göra detta kör vi:

$ hitta / -typ f -perm 644 -print -exec chmod 777 () \;

25) Hitta alla filer som matchar vissa kriterier och ta bort dem

Förr eller senare kan du behöva ta bort vissa filer. Om detta händer anger du:

$ hitta / -typ f -namn "linuxtechi.*" -exec rm -f () \;

Ovanstående exempel visar perfekt kraften i find-kommandot, vilket avsevärt kan förenkla uppgiften att hitta filer.

Behovet av att söka efter filer kan uppstå i nästan alla operativsystem som du kan arbeta med filsystem. Det klassiska exemplet för oss är operativ system Linux, som vi kommer att använda i konsolläge. Låt oss titta på möjligheterna att söka efter filer i systemet via konsolen. För att söka efter filer på ett Linux-system finns det ett sökkommando som låter dig utföra en ganska flexibel sökning, så att du kan ange ytterligare sökkriterier. Låt oss överväga funktionerna i detta kommando mer detaljerat.

Hitta kommandosyntax:

Hitta sökväg -alternativ

Sökvägen anger i vilken katalog det ska sökas. Dessa kan till exempel vara värden som detta:
. - aktuell katalog
/ - rotkatalog
~ - hemkatalog

Efter att ha angett sökvägen är det så här sökalternativen specificeras. Det ser förvirrande ut, men det finns faktiskt inga svårigheter.

Huvudalternativ:
-namn- sök efter namn, sökmönster är inställt;
-användare- söka efter filer som tillhör en specifik användare;
-grupp- sök efter filer som tillhör en specifik grupp;
-perm- sök efter filer med åtkomstläge;
-typ- sök efter filer efter typ, lista över typer:

  • b- speciell blockfil;
  • d- katalog;
  • c- en specialteckenfil;
  • f- normal fil;
  • l- symbolisk länk;
  • sid- namngiven rör;
  • s- uttag.

-storlek- sök efter filer med storlek n enheter;
-mtid -n +n- sök efter filer efter ändringsdatum, mindre (-) eller fler (+) dagar sedan.

Låt oss försöka söka efter filer och simulera olika situationer.
Låt oss hitta filerna på en flyttbar enhet som är ansluten till USB och förmonterad i systemet.

Sök efter filer efter tillägg:

$ hitta /mnt/usb -namn "*.mp3" -print

Detta kommando kommer att söka i katalogen /mnt/usbär katalogen där enheten är monterad. Sökningen kommer att utföras på alla filer (*) med filtillägget .mp3.
Sökmasken kan ändras ganska flexibelt, till exempel kan du ställa in ett nyckelord som filnamnet börjar med och söka efter det.

Sök filer efter startnyckelord:

$ hitta ~ -namn "config*" --print

Detta kommer att visa en lista över hittade filer som börjar med nyckelord config.
En av styrkorna med kommandot är möjligheten att söka enligt ett reguljärt uttryck. För att demonstrera, låt oss söka efter filer som börjar med latinska bokstäver från "a" till "j".

Sök filer efter mönster vanligt uttryck:

$ hitta / -namn "*" --print

Enligt det angivna mönstret kommer alla filer i systemet som börjar med bokstäverna från "a" till "j" att genomsökas.

Alla som är mer eller mindre bekanta med Linux-system vet att filåtkomstlägen är mycket viktiga. Ibland behöver du hitta filer som har specifika behörigheter, för detta ändamål kan du använda sökningen med alternativet -perm.

Sök efter filer med åtkomstläge 755:

$ hitta. -perm 775 --tryck

På samma sätt kan du göra en mer flexibel sökning. Låt oss hitta filer efter användargrupp som har full åtkomst.

Sök efter filer med behörigheter för en grupp:

$ hitta. -perm -070 --tryck

Bindestrecket kan ersättas med ett plustecken, detta kommer att söka efter filer som har minst en av de givna behörighetsbitarna inställda, resten av bitarna kommer att ignoreras.

I följande exempel kan du överväga att söka efter filer som ägs av en specifik användare eller grupp.

Sök efter filer för en specifik användare:

$ hitta / -user admin --print

Sökningen kommer att hitta filer som ägs av användaren administration.

Sök efter filer som tillhör en specifik användargrupp:

$ hitta / -grupp bots --print

Filer som tillhör användargruppen kommer att hittas bots. Dessutom kan du söka efter filer som ägs av icke-existerande användare eller grupper:

$ hitta / -nouser –print $ hitta / -nogroup –print

Möjligheten att söka efter vissa typer av filer är också en viktig funktion. Till exempel, om det finns ett behov av att hitta alla symboliska länkar i en viss katalog.

Sök efter symboliska länkar:

$ hitta /etc -typ l --print

Sökningen kommer att göras i katalogen /etc, där alla symboliska länkar kommer att väljas.

Ibland är det nödvändigt att se listan över kapslade kataloger i vilken katalog som helst, för sådana uppgifter finns följande kommando.

Visa kapslade kataloger i en katalog:

$ hitta /mnt/usb -typ d --print

Skärmen visar en lista över kataloger som finns i katalogen. /mnt/usb. Låt oss nu gå vidare till nästa alternativ, detta är möjligheten att söka efter filer av en viss storlek.

Sök filer efter storlek:

$ hitta. -storlek 2000k --tryck

Filer med en storlek på 2000 kilobyte kommer att sökas, storlekar kan också anges i megabyte, för detta, istället för bokstaven "k", ska bokstaven "M" anges.

Som nästa exempel kommer vi att använda möjligheten att söka efter filer efter deras ändringstid. För detta ändamål kommer vi att använda alternativet –mtid.

Sök efter filer som har ändrats under de senaste 2 dagarna:

$ hitta /var/www/html -mtime +2 --print

Sökningen kommer att göras i katalogen /var/www/html, och filer som har ändrats under de senaste 2 dagarna kommer att sökas igenom. Kanske ett av de viktigaste och mest bekväma sökalternativen. Du kan också söka efter ändringsdatum med omvänt tillstånd. Låt oss försöka hitta filer i en katalog som inte har ändrats på 5 dagar.

Sök efter filer som inte har ändrats på 5 dagar:

$ hitta /var/www/html -5 --print

Det var allt för nu, jag hoppas att dessa exempel hjälpte dig att hantera detta kommando. Dess bekvämlighet presenteras tydligt, och det kommer inte att vara överflödigt att veta om dess kapacitet, särskilt om du ska arbeta med Linux-system. Kompetensen hos en kompetent filsökning sparar din personliga tid, och som du vet är tid ovärderlig. Framgångar på jobbet!

Om du upptäcker ett fel, välj en textbit och tryck på Ctrl + Retur
DELA MED SIG: