Letar efter filer i Linux. Hur man söker efter filer i Linux med hjälp av hitta kommandot Linux sök efter alla filer i en katalog

Mycket ofta behöver du snabbt hitta någon fil i filsystemet, men du har ingen aning om var den är. Och om GUI-verktyg för att söka efter en fil är tråkiga eller om du inte har ett GUI installerat alls eller om du inte använder det alls, kommer omfattande kommandon för att söka efter filer, mappar och delar av en fil i Linux att komma till rädda.

Sök efter en fil efter namn i databasen.
Kommandot locate kan användas för att söka efter fil(er) baserat på en del av filnamnet. Kommandot skannar namndatabasen och returnerar sökvägen till filen/filerna du letar efter. Vi rekommenderar att du kör kommandot med alternativet -i: lokalisera -i för en sökning som inte är skiftlägeskänslig.
Exempel:

subsanek@subsanek-laptop:~$ lokalisera -i .ogg
/home/subsanek/okänt - okänt/01 - okänt 1 - ???.ogg
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/book.oggvorbis.html
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/intro.oggvorbis.html
/usr/share/kde4/apps/bball/bounce.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/a.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/b.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/c.ogg
(stympad)


-att anropa kommandot hittade alla filer i systemet med tillägget ogg.
hitta sökningar efter filer mycket snabbt, men det är bara att titta på en lista med namn från en databas, och om filen skapades nyligen, finns det en god chans att den inte hittas.
Databasuppdatering.
Du kan uppdatera kommandodatabasen för lokalisera med kommandot (som en superanvändare):
uppdateradb
Människoläsbar produktion.
Ofta kan lokaliseringskommandot producera tusentals resultat som helt enkelt blinkar framför skärmen och inte gör något för dina ögon, för att undvika detta kan du omdirigera resultatet till en behållare:
lokalisera -i .ogg | mindre
Du kan också ställa in hur många resultat du vill visa med alternativet -n:
lokalisera -i .ogg -n 10
-visar de första 10 resultaten.

Sök efter filer med riktig skanning.
Hitta kommandot skannar filsystemet för att hitta en fil, vilket gör det här verktyget långsamt men effektivt.
För att söka på namn måste du ange nyckeln -name
Exempel:
hitta -namn filnamn.txt
Som standard, hitta sökningar rekursivt i den aktuella katalogen.

Sök efter text med ett fragment av text.
Det legendariska grep-kommandot kan tjäna nästan alla syften. Jag gillar att använda den inte bara för att söka efter nödvändiga filer i källkatalogen. Du kan också använda grep för att söka efter reguljära uttryck.
Kommandoprototyp:
grep "sökmönster" file_to_search
Exempel:
grep -R "text" /
-Kommandot kommer rekursivt att söka igenom alla textfiler i systemet efter ordet text.
Grep har ett imponerande antal alternativ som kan behövas ganska ofta:

subsanek@subsanek-laptop:~$ grep --help
Användning: grep [KEY]... PATTERN [FILE]...
Sök efter PATTERN i varje FIL eller standardingång.
Som standard är PATTERN ett enkelt reguljärt uttryck (BRE).
Exempel: grep -i "hej världen" menu.h main.c

Välja typen av reguljärt uttryck och dess tolkning:
-E, --extended-regexp PATTERN - utökat reguljärt uttryck (ERE)
-F, --fixed-regexp PATTERN - strängar med fast längd, avgränsade
nyradstecken
-G, --basic-regexp PATTERN - enkelt reguljärt uttryck (BRE)
-P, --perl-regexp PATTERN - Perl reguljära uttryck
-e, --regexp=PATTERN använd PATTERN för att söka
-f, --file=FIL ta PATTERN från FIL
-i, --ignore-case ignorera skillnaden mellan skiftlägen
-w, --word-regexp PATTERN måste matcha alla ord
-x, --line-regexp PATTERN måste matcha hela raden
-z, --null-datarader separeras av en nollbyte snarare än
radsluttecken

Dessutom:
-s, --no-messages undertrycker felmeddelanden
-v, --revert-match välj omatchade rader
-V, --version utskriftsversion information och avsluta
--hjälp visa hjälp och avsluta
--mmap använd minnesmapping (mmap) när det är möjligt

Utgångskontroll:
-m, --max-count=NUM stopp efter det angivna ANTAL matchningar
-b, --byte-offset skriv offset in
bytes
-n, --line-number skriv ut radnummer tillsammans med utdatarader
--linjebuffrad återställningsbuffert efter varje rad
-H, --with-filename skriv ut filnamnet för varje matchning
-h, --no-filename startar inte utdata med filnamn
--label=LABEL matar ut LABEL som filnamn för
standardinmatning
-o, --only-matching visar bara den del av strängen som matchar PATTERN
-q, --quiet, --silent undertrycker all normal utmatning
--binary-files=TYPE antar att den binära filen är TYPE:
binär, text eller utan matchning.
-a, --text samma som --binary-files=text
-I samma som --binary-files=without-match
-d, --directorys=ACTION hur man hanterar kataloger
ACTION kan läsas,
recurse (rekursivt), eller hoppa över (hoppa över).
-D, --devices=ACTION hur man hanterar enheter, FIFO:n och uttag
ACTION kan vara "läs" eller "hoppa över"
-R, -r, --rekursiv samma som --directorys=recurse
--include=F_TEMPLATE bearbetar endast filer som matchar F_TEMPLATE
--exclude=F_PATTERN hoppa över filer och kataloger,
faller under F_MALL
--exclude-from=FIL hoppa över filer som matchar mönstret
filer från FILE
--exclude-dir=PATTERN-kataloger som matchar PATTERN
kommer vara saknad
-L, --files-without-match skriv endast ut FILnamn utan matchningar
-l, --files-with-matches skriv endast ut FILnamn med matchningar
-c, --count skriv bara ut antalet träffar
rader per FIL
-T, --initial-tab align with tabs (om nödvändigt)
-Z, --null skriv ut byte 0 efter FILnamnet

Kontexthantering:
-B, --before-context=NUM skriv ut ANTAL rader i föregående sammanhang
-A, --after-context=NUM skriv ut de ANTAL raderna i efterföljande sammanhang
-C, --context[=NUM] skriv ut ANTAL kontextrader,
--färg[=NÄR],
--colour[=NÄR] använd markörer för att skilja matchning åt
rader; NÄR det kan vara alltid (alltid),
aldrig (aldrig), eller auto (automatiskt)
--color, --colour använd markörer för att urskilja matchande linjer
-U, --binary tar inte bort CR-tecken i slutet av raden (MSDOS)
-u, --unix-byte-offsets utgångsoffset som om det inte finns några CR (MSDOS)

Istället för egrep är det meningen att grep -E ska köras. Istället för fgrep antas grep -F.
Det är bättre att inte köra som egrep eller fgrep.
När FILE inte anges, eller när FILE är -, läses standardinmatningen.
Om färre än två filer anges, antas -h. När du hittar
matchar, kommer programavslutningskoden att vara 0 och 1 om inte
fel, eller om alternativet -q inte är specificerat, kommer utgångskoden att vara 2.

Idag ska vi titta på flera av de mest populära sätten att söka efter filer i Linux med hjälp av terminalen.

1) hitta: För att söka efter filer från kommandoraden kan du 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 utförs sökningen i den aktuella katalogen.

"kriterier" - Sökmöjligheter.

"handling" - Alternativ som påverkar eller styr söktillståndet, t.ex.

2) lokalisera: Team "lokalisera" Detta är ett alternativ till kommandot "hitta -namn". Kommandot find söker efter filer i den valda delen av filsystemet och processen kanske inte är särskilt snabb. Å andra sidan söker kommandot locate efter filer i databasen som skapats specifikt för detta ändamål /var/lib/locatedb, 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 visas all tillgänglig information. Detta kommando är snabbare än " hitta" men mindre komplett.

4) som: Team" som" söker igenom alla sökvägar listade i PATH-variabeln efter det angivna kommandot.

5) typ:

När anropas utan alternativ, visar hur namn 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

lämpligt namn. Listan innehåller även alias och funktioner,

om inte alternativet är specificerat -s. TILL

kommandot hash nås 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: sista minuten-turer och resor till Turkiet, Egypten,

    Hitta filen efter dess namn. Denna enklaste sökning utförs med hjälp av sökverktyget. Kommandot nedan kommer att söka efter en fil i den aktuella katalogen och alla dess underkataloger.

    hitta -iname "filnamn"

    • Skriv -iname istället för -name för att ignorera skiftläge i det angivna filnamnet. Kommandot -name är skiftlägeskänsligt.
  1. Börja söka i rotkatalogen. För att köra en systemomfattande sökning, lägg till /-modifieraren i frågan. I det här fallet kommer kommandot find att söka efter filen i alla kataloger, med början med roten.

    hitta / -iname "filnamn"

    • Du kan börja söka i en specifik katalog; för att göra detta, ersätt / med katalogsökvägen, till exempel /home/max .
    • Kan användas. istället för / för att endast söka efter filen i den aktuella katalogen och dess underkataloger.
  2. Använd jokertecken.* för att hitta filer vars namn matchar en del av begäran. Med hjälp av jokertecknet * kan du hitta en fil vars fullständiga namn är okänt, eller hitta alla filer med ett specifikt tillägg.

    hitta /home/max -iname "*.conf"

    • Detta kommando hittar alla filer med filtillägget .conf i användarens Max-mapp (och dess undermappar).
    • Använd det här kommandot för att hitta alla filer vars namn matchar en del av frågan. Till exempel, om du har många WikiHow-relaterade filer på din dator, hitta alla filerna genom att skriva "*wiki*" .
  3. Gör det enklare att hantera dina sökresultat. Om det finns för många sökresultat blir det svårt att hitta filen du behöver bland dem. Använd | så att sökresultaten filtreras av kommandot less. Detta gör det lättare att bläddra och filtrera dina sökresultat.

    hitta /home/max -iname "*.conf" | mindre

    Hitta specifika föremål. Använd modifierare för att endast visa vissa objekt i sökresultaten. Du kan söka efter vanliga filer (f), kataloger (d), symboliska länkar (l), teckenbaserade I/O-enheter (c) och blockenheter (b).

    hitta / -typ f -iname "filnamn"

  4. Filtrera dina sökresultat efter filstorlek. Om du har många filer med liknande namn på din dator, men du vet storleken på filen du letar efter, filtrera dina sökresultat efter filstorlek.

    hitta / -storlek +50M -iname "filnamn"

    • Detta kommando hittar alla filer som är större än 50 MB. Använd + eller - modifieraren för att indikera en ökning eller minskning i storlek. Om det inte finns någon + eller - modifierare, kommer kommandot att hitta filer vars storlek exakt matchar den angivna storleken.
    • Du kan filtrera dina sökresultat efter byte (c), kilobyte (k), megabyte (M), gigabyte (G) eller 512-byte block (b). Observera att modifierarna som visas är skiftlägeskänsliga.
  5. Använd logiska operatorer (booleska operatorer) för att kombinera sökfilter. Du kan använda operatorerna -och , -eller , -not för att kombinera olika sökfrågor till en enda fråga.

    hitta /resefoton -typ f -storlek +200k -inte -iname "*2015*"

    • Detta kommando hittar filer i mappen Travelphotos som är större än 200 kB och som inte har numret 2015 i sina namn.

Det kan finnas tillfällen när du vet att en fil eller katalog finns, men du vet inte hur du hittar den. Det finns flera kommandon som hjälper dig med detta: hitta , lokalisera och vilken .

4.10.1. hitta kommando

Find-kommandot har följande format:

Hitta sökväg sample_for_search

Om du inte anger en sökväg kommer find att börja söka efter det angivna mönstret i den aktuella katalogen och fortsätta genom alla underkataloger däri.

Kommandot find har många alternativ, som kan hittas genom att läsa man-sidan (skriv man find vid kommandotolken). Det vanligaste alternativet är -name, som anger en sökning efter alla filer och kataloger som innehåller en specifik kombination av bokstäver i namnet.

Hitta. -namn tes

Detta kommando söker i den aktuella katalogen efter alla filer som innehåller "tes" i namnet.

4.10.2. lokalisera kommandot

Med detta kommando kan du se alla filer eller kataloger vars namn innehåller mönstret du letar efter. Om du till exempel vill söka efter en fil som innehåller ordet hund i namnet anger du på kommandoraden:

Hitta hund

Kommandot locate använder en databas för att hitta filer eller kataloger som innehåller ordet hund i deras namn. Sökresultat kan innehålla en fil som heter dog, en fil som heter bulldog.txt, en katalog som heter /dogs/ och så vidare. För att lära dig mer om kommandot locate, se dess man-sida (skriv man locate vid kommandotolken).

Förutsatt att databasen är uppdaterad utför locate-kommandot sökningar mycket snabbt. Lokaliseringskommandots databas uppdateras varje natt med hjälp av cron-tjänsten.

cron är ett litet program som körs i bakgrunden och utför olika uppgifter (som t.ex. uppdatering av locate-kommandodatabasen) med jämna mellanrum. För att komma åt cron-manualen, skriv man cron vid kommandotolken.

cron uppdaterar regelbundet slocate-databasen, som används för att hitta filer eller kataloger. Att växla mellan operativsystem och stänga av maskinen i slutet av dagen hindrar cron från att automatiskt uppdatera databasen.

För att uppdatera databasen manuellt, logga in som root (genom att skriva su - vid kommandotolken och ange roots lösenord) och skriv updatedb vid kommandotolken.

Efter en tid kommer slocate-databasen som används av kommandot locate att uppdateras.

När du är klar med arbetet som kräver att du är root, skriv exit på kommandoraden - du kommer tillbaka till din session.

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 sökkommandot bekvämt. Hur man använder det? Naturligtvis kommer detta verktyg med en stor man-sida, men vi kommer att 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 hitta 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 ändras denna databas varje natt. Du kan köra updatedb-kommandot manuellt då och då för att ändra det. hitta sökningar efter delsträngar:

Antalet tillåtna felstavningar 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 specialtecken, skriv helt enkelt:

Katalogträd översikt

Ibland behöver du få en överblick över ett katalogträd. Låt oss till exempel säga att du har fått en ny CD-ROM och vill veta vad som finns på den. Du kan helt enkelt använda ls -R . Personligen föredrar jag en av följande metoder för läsbarhet. 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. Gnu-versionen av find som vanligtvis levereras med Linux har förmågan att ändra utdataformatet för att visa till exempel filnamnet och dess storlek:

Du kan använda en liten perl-procedur som fungerar med kommandot ls, som gör liknande 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äcker dessa.

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

Standardverktygen för att söka efter textsträngar i filer är grep/egrep för sökningar med reguljära uttryck och fgrep för sökningar med 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 en egrep-sökning.

Ett mycket intressant sökprogram är agrep. Agrep fungerar i princip som egrep, men gör det möjligt att söka efter stavfel. För att söka efter ett uttryck och tillåta upp till två stavfel, skriv:

Efter detta kan du söka efter en sträng i alla filer som tidigare indexerats

glimpse -i -2 "sök exprision"

glimpse - tillåter också stavfel (som agrep) och -2 indikerar att två fel är tillåtna. glimt finns på