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

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

För att endast söka efter körbara filer, skriv:

$ 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.

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.

Allmän syntax

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.

Beskrivning av alternativ

Alternativ Beskrivning
-namn Sök på namn.
-iname Versalokänslig sökning efter namn.
-typ

Typ av sökobjekt. Möjliga alternativ:

  • f - fil;
  • d - katalog;
  • l - länk;
  • p - rör;
  • s är uttaget.
-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 användningsexempel

Hitta en fil efter namn

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.

Sök efter datum

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

Typ

Sök endast efter filer i den aktuella katalogen och alla dess undermappar:

* f— sök endast efter filer.

Sök efter behörigheter

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

Filsökning efter innehåll

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.

Sorterat efter ändringsdatum

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 .

Schemalagd städning

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.

Ett enkelt exempel på hur du använder kommandot find

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.

hitta kommandosyntax

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]

Väg

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.

alternativ

Hitta kommandoalternativ anges med början med ett "-" följt av namnet på alternativet. Överväg de viktigaste alternativen.

Sökkriterier

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.

-tidNFilen öppnades senast för N dagar sedan.
-mtid NFilen ändrades senast för N dagar sedan.
-namnmallFilnamn (namnmönster) utan sökväg. Det rekommenderas att du alltid sätter mönstret inom citattecken.
-nyare annan_filFilen ändrades senare än other_file.
-storlek [±] NFilstorleken ä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 CFiltyp C. De vanligaste värdena för C är: d är en katalog, f är en fil.
-användaranvändarnamnFilen ägs av en användare som heter Användarnamn.

Hitta kommandoexempel med hjälp av kriterier

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

Operatörer

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 kommandoexempel med operatorer

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

Åtgärder på filer

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 kommandoexempel med hjälp av åtgärder

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 () \;

Slutsats

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:

Katalogträd översikt

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.

Sök filer efter innehåll (sök efter textsträngar i filer).

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å

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