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
För att endast söka efter körbara filer, skriv:
$ 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.
Uppdaterad: 2019-11-02 Publicerad: 2016-07-25
Det mest mångsidiga och funktionella Linux-sökkommandot är − hitta. Den här artikeln är ett fuskblad med exempel på hur det används.
hitta<где искать> <опции>
<где искать> — sökvägen till rotkatalogen varifrån du ska starta sökningen. Hitta till exempel /home/user - sök i lämplig katalog. För den aktuella katalogen, använd punkten ".".
<опции> — en uppsättning regler att söka efter.
* som standard är sökningen rekursiv. För att söka i en specifik katalog kan du använda alternativet Max djup.
Alternativ | Beskrivning |
---|---|
-namn | Sök på namn. |
-iname | Versalokänslig sökning efter namn. |
-typ |
Typ av sökobjekt. Möjliga alternativ:
|
-storlek | Objektets storlek. Specificeras i block om 512 byte eller helt enkelt i byte (med symbolen "c"). |
-mtid | Tid för filändring. Anges i dagar. |
-mmin | Ändra tid i minuter. |
-en tid | Den tid som objektet senast användes i dagar. |
-är i | Sista åtkomsttid i minuter. |
-ctime | Senast ändradägare eller rättigheter till objektet i dagar. |
-cmin | Senaste ägare eller rättigheter ändras på några minuter. |
-användare | Sök efter ägare. |
-grupp | Efter grupp. |
-perm | Med vissa åtkomsträttigheter. |
-djup | Sökningen ska inte starta från roten, utan från den djupaste kapslade katalogen. |
-Max djup | Det maximala djupet för katalogsökningen. -maxdepth 0 - sök endast i den aktuella katalogen. Som standard är sökningen rekursiv. |
-beskära | Uteslut de listade katalogerna. |
-montera | Flytta inte till andra filsystem. |
-regex | Efter namn med reguljärt uttryck. |
-regextyp<тип> | Typen av det reguljära uttrycket. |
-L | Visar innehållet i symboliska länkar (symlänkar). |
-tömma | Sök efter tomma kataloger. |
-radera | Radera hittades. |
-ls | Utdata som ls -dgils |
-skriva ut | Visa hittades. |
-tryck 0 | Sökväg till hittade föremål. |
-exec<команда> {} \; | Kör kommandot på hittat. |
-ok | Ge en prompt innan du kör -exec. |
Den fullständiga uppsättningen av faktiska alternativ kan erhållas med kommandot man hitta.
hitta / -namn "fil.txt"
*V detta exempel kommer att söka efter en fil med namnet file.txt genom hela filsystem med början från roten / .
Söka efter en fil med en del av dess namn:
hitta / -namn "*.tmp"
* Detta kommando kommer att söka efter alla mappar eller filer i rotkatalogen /, slutar i .tmp
Hitta alla filer eller mappar som börjar med sess_ och avsluta med CD
hitta. -namn "sess_*" -a -namn "*cd"
* -a: logiskt OCH, -o: logiskt ELLER.
1. Sök efter filer som har ändrats för ett visst antal dagar sedan:
hitta. -typ f -mtid +60
* givet kommando hittar filer som har ändrats för mer än 60 dagar sedan.
2. Sök efter filer med nyare. Det här alternativet har varit tillgängligt sedan version 4.3.3 (du kan se det med kommandot hitta --version).
a) datum för ändring:
hitta. -typ f -newermt "2019-11-02 00:00"
* kommer att visa alla filer som har ändrats sedan 02.11.2019 00:00.
hitta. -typ f -newermt 2019-10-31 ! -newermt 2019-11-02
* hittar alla filer som ändrades mellan 31/10/2019 och 11/01/2019 (inklusive).
b) Ansökningsdatum:
hitta. -typ f -newerat 2019-10-08
* alla filer åtkomliga sedan 10/08/2019.
hitta. -typ f -newerat 2019-10-01 ! -newerat 2019-11-01
* alla filer öppnade i oktober.
c) skapandedatum:
hitta. -typ f -nyare 2019-09-07
hitta. -typ f -nyare 2019-09-07 ! -nyare "2019-09-09 07:50:00"
* filer skapade från 09/07/2019 00:00:00 till 09/09/2019 07:50
Sök endast efter filer i den aktuella katalogen och alla dess undermappar:
* f— sök endast efter filer.
Vi söker alla rättigheter att läsa och skriva:
hitta / -perm 0666
Hitta filer som bara ägaren har åtkomst till:
hitta / -perm 0600
hitta / -typ f -exec grep -i -H "innehåll" () \;
* i det här exemplet utförs en rekursiv sökning efter alla filer i katalogen / och en lista över de som innehåller strängen innehåll.
hitta /data -typ f -printf "%TY-%Tm-%Td %TT %p\n" | sort-r
* kommandot hittar alla filer i katalogen /data, lägger till ändringsdatumet till namnet och sorterar data efter namn. Som ett resultat får vi att filerna kommer att gå i den ordning de ändras.
hitta /hem/användare/* -typ d -exec chmod 2700 () \;
* i det här exemplet letar vi efter alla kataloger ( typ d) i katalogen /hem/användare och sätta rättigheter för dem 2700 .
team hitta bekväm att använda för automatisk borttagning föråldrade filer.
Öppna cron-jobb för redigering:
Och lägg till:
0 0 * * * /bin/hitta /tmp -mtid +14 -exec rm () \;
* i det här exemplet tar vi bort alla filer och mappar från katalogen /tmp, hundradel äldre 14
dagar. Jobbet pågår varje dag kl 00:00
.
* full väg till körbar fil kommandot hitta leta som finner- i olika UNIX-system kan den placeras på olika platser.
Linux har en mycket kraftfull och användbart kommando för att söka efter filer - kommando hitta. Den har många funktioner för att söka efter filer, men det orsakar ibland svårigheter för nybörjare, till stor del på grund av dess syntax.
Låt oss börja med ett enkelt exempel på hur du använder kommandot find för att söka på din dator efter filer med namnet config . Vi kommer att leta efter konfigurationsfiler med start från / rotkatalogen. För att göra detta måste du köra kommandot som root för att ha tillräckliga åtkomsträttigheter, annars får du meddelanden "Permission denied". Så låt oss köra kommandot:
Hitta / -name config -print
Kommandot betyder följande: leta efter filer med namnet config (-name config), med start från katalogen / (första parametern i find-kommandot) och skriv ut filnamnen till skärmen (argument -print). Jag noterar att sökningen är rekursiv, det vill säga när man söker visas alla kapslade kataloger. Som du kan se är allt enkelt. Låt oss nu titta på syntaxen för kommandot och gå vidare till en översikt över dess huvudargument.
Den allmänna syntaxen för find-kommandot, som du kan hitta i referens guide, kanske inte verkar helt enkelt, så jag kommer att ge en mer bekväm för perception:
hitta [sökväg] [alternativ] [sökkriterier] [filåtgärder]
Du kan använda både absoluta och relativa sökvägar som en sökväg, såväl som en blankstegsseparerad lista med sökvägar.
Hitta kommandoalternativ anges med början med ett "-" följt av namnet på alternativet. Överväg de viktigaste alternativen.
Hitta kommandot kan ha flera sökkriterier (även kallade tester). Varje kriterium är ett specifikt testvillkor som returnerar antingen sant eller falskt. Detta kan jämföras med villkoren för en if-sats i programmering. När varje fil bearbetas kontrollerar find-kommandot varje kriterium i tur och ordning, och om varje kriterium returnerar false , så går find-kommandot vidare till nästa fil. Det finns en hel del kriterier för find-kommandot, vi ska bara titta på ett fåtal av dem.
-tidN | Filen öppnades senast för N dagar sedan. |
-mtid N | Filen ändrades senast för N dagar sedan. |
-namnmall | Filnamn (namnmönster) utan sökväg. Det rekommenderas att du alltid sätter mönstret inom citattecken. |
-nyare annan_fil | Filen ändrades senare än other_file. |
-storlek [±] N | Filstorleken är N block, om +N anges är filstorleken större än N , -N är mindre. Tecknet efter N anger blockstorleken. b - 512 byte, c - byte, w - 2 byte, k - kilobyte, M - megabyte, G - gigabyte. |
-typ C | Filtyp C. De vanligaste värdena för C är: d är en katalog, f är en fil. |
-användaranvändarnamn | Filen ägs av en användare som heter Användarnamn. |
Hitta i den aktuella katalogen vanliga filer (inte kataloger) vars namn börjar med symbolen "~".
hitta. -typ f -namn "~*" -print
Hitta filer i den aktuella katalogen som har ändrats senare än filen file.bak .
hitta. -nyare file.bak -typ f -print
Kriterier kan kombineras med operatorer. Följande är operatörerna i fallande ordning efter deras prioritet.
I allmänhet, när du använder operatorer, kontrolleras kriterierna i prioritetsordning. Du kan ändra ordningen med parenteser. Parenteser måste separeras med ett snedstreck.
Hitta filer i den aktuella katalogen som börjar med tecknet "~" eller c "temp" och är bara vanliga filer (-typ f), inte kataloger.
hitta. \(-namn "~*" -eller -namn "temp*" \) -typ f -print
Hitta i den aktuella katalogen (utan att bearbeta underkataloger - -maxdeph 1) vanliga filer (-fil f) större än 600 megabyte och mindre än 1 gigabyte (-storlek) eller filer vars namn slutar på ".mpeg" (-namn).
hitta. -maxdjup 1 \(\(-storlek +600M -och -storlek -1G \) -eller -namn "*.mpeg" \) -och -typ f
När hitta kommandot körs kan du utföra olika åtgärder på de hittade filerna. Låt oss överväga de viktigaste.
I körbara kommandon kan du använda alternativet () som ett argument, som ersätts av sökvägen till den aktuella filen.
Hitta vanliga filer som är större än 1000 byte i den aktuella katalogen och kör kommandot ls -dils (ls action) på dem.
hitta. -storlek +1000c -typ f -ls
Hitta vanliga filer i den aktuella katalogen som börjar med tilde-tecknet "~", och för varje fil skicka en begäran om att radera den (för att utföra kommandot rm).
hitta. -namn "~*" -typ f -ok rm () \;
I anteckningen ansåg vi en mycket viktig och användbar linux kommando find , som ger nästan obegränsade möjligheter att hitta filer enligt många kriterier och mönster. Och med hjälp av kommandon (åtgärder) kan du söka efter filer och utföra alla operationer på dem.
Idag ska vi ta en titt på några av de mest populära sätten att hitta filer i Linux med hjälp av terminalen.
1) hitta: För att söka efter filer från kommandorad du kan använda kommandot "hitta". Detta kommando har följande syntax:
hitta sökvägskriterier åtgärd
väg - Avsnitt för att ange sökkatalogen. Om inget anges går sökningen genom den aktuella katalogen.
"kriterier" - Sökmöjligheter.
handling - Alternativ som påverkar eller styr sökstatus, som t.ex
2) lokalisera: Team "lokalisera" detta är ett alternativ till kommandot "hitta -namn". Kommandot find letar efter filer i den valda delen av filsystemet, och processen kanske inte är särskilt snabb. Å andra sidan söker kommandot locate upp filer i den speciellt skapade databasen /var/lib/locatedb för detta ändamål, vilket är mycket snabbare. För att uppdatera databasen, använd kommandot uppdateradb.
3) vari: “var är" returnerar platsen för koden (alternativ -b), man-sidor (alternativ -m) och källfiler (alternativ -s) för det angivna kommandot. Om inga alternativ anges, kommer hela tillgänglig information. Detta kommando är snabbare än " hitta" men mindre komplett.
4) som: Team" som" söker efter alla sökvägar listade i PATH-variabeln för det angivna kommandot.
5) typ:
När anropas utan alternativ, visar det hur namnen kommer att tolkas
när det används som ett kommandonamn. Om alternativet används -a, team typ ger en lista över alla kataloger där det finns en körbar fil med
motsvarande namn. Listan innehåller även alias och funktioner,
om inte ett alternativ anges -s. TILL
kommandot hash refereras inte om alternativet är specificerat -a. Team typ ger 0,
om minst ett av argumenten hittas, och 1 annars.
vakt
Explo.ru - allt om turism och rekreation: heta turer och resor till Turkiet, Egypten,
Du är förmodligen bekant med det här problemet: Det finns en fil och du kommer inte ihåg var du lade den.
I det här fallet är kommandot find praktiskt. Hur man använder det? Naturligtvis kommer det här verktyget med en stor man-sida, men vi ska titta på några typiska fall. Bläddra i katalogträdet, börja med det nuvarande, och hitta filen lostfile.txt:
Om du söker genom ett stort katalogträd, kan find-kommandot vara ganska långsamt. Ibland är det bekvämare att använda kommandot locate. Den letar inte efter filen direkt i filsystemet, utan letar igenom sin databas. Denna metod är mycket snabbare, men databasen kan bli föråldrad. På vissa distributioner uppdateras denna databas varje natt. Du kan köra updatedb-kommandot manuellt då och då för att uppdatera det. hitta sökningar efter delsträngar:
Antalet tillåtna stavfel beror på filnamnets längd, men kan ställas in med alternativet -t. För att tillåta maximalt 2 fel och använda ett tjänstecken, skriv helt enkelt:
Ibland är det nödvändigt att få en överblick över ett katalogträd. Du har till exempel fått en ny CD-ROM och skulle vilja veta vad som finns på den. Du kan bara använda ls - R . Personligen, för läsbarheten, föredrar jag en av följande metoder. Träd (sunsite.unc.edu/pub/Linux/utils/file/tree-1.2.tgz) visar ett katalogträd som ett diagram.
Eller använd gamla goda fynd. I Gnu-versionen av find , som vanligtvis levereras med Linux, är det möjligt att ändra utdataformatet för att visa till exempel filnamn och storlek:
Du kan använda en liten perl-rutin som fungerar med kommandot ls för att göra den här typen av saker. Den kan laddas ner härifrån: lsperl.gz . Det finns många andra verktyg för bläddring i katalogträd, men i de flesta fall är dessa tillräckliga.
Standardverktygen för att hitta textsträngar i filer är grep / egrep för normala uttryckssökningar och fgrep för att söka efter bokstavliga strängar. För att söka efter ett uttryck i alla filer i den aktuella katalogen, skriv helt enkelt:
Om du tycker att det är svårt att komma ihåg dessa långa kommandon, använd ett litet skript som kan laddas ner härifrån: grepfind.gz . Skriptet tar också bort icke-utskrivbara tecken från söksträngen så att du inte av misstag får en binär fil som ett resultat av egreps sökning.
Mycket intressant program sök - agrep . Agrep fungerar i princip som egrep , men låter dig söka baserat på felstavningar. För att söka efter ett uttryck och tillåta högst 2 felstavningar, skriv:
Därefter kan du söka efter en sträng i alla filer som tidigare indexerats
glimpse -i -2 "sökuttryck" |
glimpse tillåter också stavfel (liksom agrep) och -2 indikerar att två fel är tillåtna. glimt finns på