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.
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
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:
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
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:
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*
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
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:
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.
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
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
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.
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
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
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
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
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
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
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
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
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
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.
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 på, och för att förhindra denna åtgärd - n.
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 () ;
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"
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:
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:
Det finns också många typer av nödvändiga element. Här är deras lista:
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.
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
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.
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 «/» .
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
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
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
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.
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.
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.
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
Så här hittar du filer i en specifik katalogtyp:
$ hitta /root
Detta kommando kommer att leta efter alla filer i /rotkatalogen.
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"
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.
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 .
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"
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\)$"
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*"
För att hitta filer med specifika behörigheter använd -perm:
$ hitta /root -typ f -perm 0777
För sökning dolda filer i katalogen skriv in:
$ hitta ~ -typ f-namn ".*"
För att söka efter filer med SGID-bitar, kör kommandot:
$ hitta. -perm /g=s
För att söka efter filer med SUID-bitar, använd:
$ hitta. -perm /u=s
Endast för sökning körbara filer stiga på:
$ hitta. -perm /a=x
Dessutom kan du hitta skrivskyddade filer med kommandot find:
$ hitta /root -perm /u=r
För att söka efter filer för en specifik användare, använd följande kommando:
$ hitta. -användare linuxtech
För att söka efter filer för en specifik grupp, använd:
$ hitta. -grupp apache
Om vi vill söka vars storlek vi känner till kan vi använda -size:
$ hitta / -storlek -2M
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
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
Du kan hitta filer som inkluderades för 8 dagar sedan med -atime:
$ hitta / -atime 8
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
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
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 () \;
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:
-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!