denna handledning fokuserar på hur man hittar filer på Linux med hjälp av Hitta och lokalisera kommandot.

som systemadministratör är det en mycket vanlig uppgift att leta efter en specifik fil i filsystemet.

det kan dock ibland vara svårt att hitta filer på ett Linux-filsystem, särskilt om du har dussintals olika användare.

det finns två kommandon som kan hjälpa dig att nå ditt mål : hitta och lokalisera.,

i den här handledningen kommer vi att se hur du använder dessa kommandon effektivt och hur de kan ställas in för att uppnå det vi letar efter.

Innehållsförteckning

hitta filer med kommandot Sök

det första sättet att hitta och hitta filer på en Linux-värd är att använda kommandot Sök.,

som standard finns kommandot Sök på alla distributioner och det har följande syntax

$ find <options> <path> <expression>

Snabbtips : har du problem med att komma ihåg om sökvägen eller uttrycket kommer först?

Kom ihåg att för grEP är Uttryckssökvägen, och hitta är motsatsen, så sökväg uttryck!

hitta är ett ganska kraftfullt kommando eftersom det har mycket fler alternativ än lokaliseringskommandot.

här är alla möjligheter för sökfunktionen på Linux.,

hitta filer med Sök efter filnamn

den vanligaste användningen av sökfunktionen är att hitta filer som ges sina filnamn.

$ find <path> -name <pattern>

den största skillnaden mellan Sök och lokalisera när det gäller att söka efter filer är att Sök kommer att leta efter filnamn medan lokalisera kommer att leta efter sökvägar till filen.

om vi till exempel går tillbaka till runlevel-exemplet vi använde tidigare, så här Letar du efter runlevel-filer med kommandot Sök.,

$ find / -name runlevel*

vad är ”2>/dev / null” del?

jag omdirigerade felutmatningen till/dev / null med hjälp av utgående omdirigering för att undvika felmeddelanden på konsolen.

hitta filer med find by filetype

som vi tidigare diskuterat i vår artikel om hårda och mjuka länkar, filer tilldelas filtyper och det används som ett sätt att skilja dem.,

Här är en sammanfattning av alla filtyper som används på Linux.

  • f : en standardfil
  • d : en mapp eller katalog
  • l : en symbolisk länk eller mjuk länk
  • b : block enheter (till exempel en hårddisk)
  • c : tecken enheter (seriella portar, ljudkort)
  • p : namngivna rör
  • s : socket

att känna till alla dessa filtyper kan du nu söka efter filer efter filtyp med kommandot Sök.

$ find <path> -type <filetype>

om vi till exempel söker efter alla symboliska länkar på värden skulle vi utfärda följande kommando.,

$ find / -type l

parametrar kan kombineras, till exempel om jag letar efter alla symboliska länkar vars filnamn slutar med ”.service ” (för att isolera alla systemd-tjänster till exempel) skulle jag köra följande kommando.

$ find / -type l -name *.service

hitta filer med ett mönster (för tillägg)

På samma sätt som lokaliseringskommandot kan du hitta filer på Linux med ett mönster.

som en påminnelse är ett mönster en sträng som innehåller globbingtecken (t. ex.*,?, eller intervall).

det här alternativet är särskilt när du försöker hitta filer som ges en förlängning, till exempel Javascript-filer.

för att hitta filer på Linux med ett mönster, kör följande kommando

$ find <path> -name ".<extension>"
$ find / -name "*.js"

filer på Linux av ägaren

Ibland vill du isolera filer som skapats av en viss användare.

När du tar bort en användare på din värd kanske du vill ta bort alla filer som är associerade med den här användaren till exempel.,

ibland skapar användarna filer ur sin hemkatalog och det räcker inte att ta bort en användarhemkatalog av sig själv.för att hitta filer som skapats av en viss användare på Linux, kör följande kommando

$ find <path> -user <user>

för att till exempel hitta alla filer som ägs av ”john” på min värd skulle jag köra följande kommando.

$ find / -user john

vad händer om jag vill ta bort alla filer som ägs av john med ett enkelt kommando?,

det kan enkelt uppnås med hjälp av ta bort flaggan.

$ find / -user john -delete

hitta filer på Linux med behörigheter

med kommandot Sök kan du också hitta och hitta filer som har vissa behörigheter på din värd.

$ find <path> -perm <permissions>

som en påminnelse, här är hur filbehörigheter fungerar på Linux.

för att hitta alla filer som har fullständiga behörigheter (en 777 med tanke på binär notation) kan du köra följande kommando.,

$ find / -perm 777

det kan vara ganska praktiskt om du av säkerhetsskäl vill inspektera om inga filer är konfigurerade med fullständiga behörigheter på ditt system.

hitta filer med Sök efter storlek

ett annat mycket praktiskt sätt att hitta och hitta filer på Linux är att hitta sökkommandot med storleksalternativet.

storleksalternativet låter dig söka efter filer som är exakt den storlek du anger, större än en viss storlek eller lägre än en viss storlek.,

för att söka efter filer efter storlek, använd följande kommando

$ find <path> -size <size>

storleken definieras av följande prefix :

  • c: byte
  • b: 512-byte block
  • k: kilobyte
  • m: megabyte
  • g: Gigabyte

Du kan ange ett ”+” om du letar efter filer som är större än den angivna storleken.,för att hitta filer som är större än 1 GB på ditt system, kör följande kommando

$ find / -size +1G

för att hitta filer som är lägre än 10 MBs på ditt system, kör följande kommando

$ find / -size -10M

slutligen, för att söka efter filer som är exakt den storlek som anges i frågan, Ska du inte lägga till några Plus-eller minusprefix till kommandot.

$ find / -size 1024k

kommandot som just definierats kommer att hitta alla filer som är exakt 1024 Kbs i storlek på din värd.,

hitta filer på Linux efter ändringsdatum

med hjälp av Sök kan du också hitta filer som ges ett ändringsdatum, nyligen eller inte.

det här kommandot är mycket praktiskt och används ganska ofta av systemadministratörer för att hitta filer eller kataloger som nyligen har ändrats.

för att söka efter filer med Sök efter ändringsdatum, kör följande kommando

$ find <path> -mtime <time>

där tiden representerar filerna modifierade 24*<tid> timmar sedan.

som en konsekvens uttrycks tiden i dagar.,

På samma sätt som storleksalternativet kan du lägga till en ”plus” eller en ”minus” – operatör till tiden för att leta efter filer som ändrats mer än<tid> dagar sedan, eller mindre än<tid> dagar sedan.

om du till exempel vill leta efter filer som ändrats för exakt 3 timmar sedan kör du följande kommando.,

$ find / -mtime 3

för att hitta filer som ändrats för mer än en vecka sedan skulle du köra följande kommando

$ find / -mtime +7

för att hitta filer som ändrats för mindre än två dagar sedan kommer du att köra följande kommando

$ find / -mtime -2

hitta filer med dynamiskt djup

som du förmodligen märkte, sedan början av av denna handledning ger vi exempel på filer sökningar från rotkatalogen.

som en konsekvens bläddrar alla mappar rekursivt.,

Vi kan dock begränsa antalet kataloger rekursivt reste från en katalog, detta kallas djupet.

för att begränsa filsökningarna till ett visst djup, kör följande fråga

$ find <path> -maxdepth <depth>

som ett exempel, här är hur du kan begränsa filer sökningar till den aktuella katalogen, med inga barnkataloger som bläddras.

$ find / -maxdepth 1

Du kan självklart kombinera det här kommandot med namnflaggan för att söka efter filer med ett visst namn i den aktuella katalogen.,

$ find . -maxdepth 1 -name *.tar

kedja hitta med-exec

i vissa fall kan det vara användbart att kedja hitta kommandot med exec one.

exec-alternativet kan användas för att kedja flera kommandon tillsammans : ta resultatet av den första som en inmatning av den andra.,

låt oss till exempel säga att du vill hitta alla filer som ändrats för mindre än en minut sedan

$ find /home/user -mmin -1./file1

låt oss nu säga att du vill ta bort alla filer som ändrades för mindre än en minut sedan.

Du kan kedja find-kommandot med-exec-alternativet med den här syntaxen.

$ find /home/user -mmin -1 -exec echo rm -f '{}' \;

vi uppenbarligen först ”echo” resultaten som vi vill se till att vi tar bort rätt filer.,

När du är redo att ta bort dessa filer, helt enkelt ta bort echo kommandot.

$ find /home/user -mmin -1 -exec rm -f '{}' \;

hitta filer på Linux med kommandot Sök

ett annat bra sätt att hitta och hitta filer på Linux är att använda kommandot Sök.

förutsättningar

om lokaliseringskommandot inte är tillgängligt på ditt system, se till att läsa nästa avsnitt för att få lokalisera körs på ditt system.,

A-installera lokalisera på APT-och RPM-baserade distributioner

för att installera lokalisera behöver du sudo-privilegier på din Linux-värd.

för att kontrollera om locate är installerat på din värd, kör kommandot locate i kommandoraden.,

$ locate

om lokaliseringen är installerad på din dator kommer det att förvänta sig att ett uttryck tillhandahålls

om lokaliseringen inte är installerad på din värd kommer ett felmeddelande att visas

om lokaliseringen inte är installerad på din värd kommer ett felmeddelande att visas>

för att installera lokalisera på Ubuntu 18.04 och Debian 10, kör följande kommando.,

$ sudo apt-get install mlocate

på samma sätt, om du är på en CentOS eller Fedora baserad distribution, kör följande kommando för att installera lokalisera.

$ sudo yum install mlocate

B – uppdatera din mlocate-databas

lokaliseringsfunktionen fungerar med en lokal databas som lagras i ditt filsystem som lagrar varje filnamn på din värd.

När du utför ett lokaliseringskommando söker locate in i databasen som utarbetats av updatedb efter den fil du söker efter.

periodiskt uppdaterar ett cron-jobb mlocate.db-fil för dig att leta efter de senaste posterna.,

databasen finns på/var/lib/mlocate / mlocate.db som standard och updatedb konfigurationsfilen lagras på / etc / updatedb.conf.

för tillfället kan du lämna standardalternativen och köra ett enkelt updatedb-kommando för att din databas ska uppdateras.

$ sudo updatedb

leta upp filer med ett namnmönster

det mest grundläggande sättet att hitta filer på Linux är att ge ett mönster till lokaliseringskommandot.,

som standard är syntaxen för lokaliseringskommandot följande

$ locate ... ...

om du letar efter en viss konfigurationsfil på ditt system, är ett enkelt sätt att hitta det att ge sitt fullständiga filnamn till lokaliseringskommandot.

$ locate updatedb.conf

som du kan se returnerar lokaliseringskommandot de fullständiga sökvägarna till filen Jag letar efter.,

leta upp filer i begränsade kataloger

Ibland kanske du inte har tillgång till vissa kataloger på ditt system.

som en konsekvens kommer du inte att kunna hitta filerna som finns i den.

låt oss ta exemplet med en förbjuden mapp som innehåller en fil som heter ”restricted-file”.

för att hitta filer som finns på begränsade kataloger måste du köra lokaliseringskommandot med sudo-privilegier.,

$ sudo locate restricted-file

leta upp filer med ett mönster

med hjälp av lokaliseringskommandot kan du tillhandahålla ”mönster” i form av globbingtecken.

Globbing-tecken, även kallade Jokertecken, är tecken som används för att matcha en eller flera poster med ett förenklat uttryck.

den mest populära är ”*” som matchar alla tecken inklusive ingen.

här är en recap-tabell för globbing-tecken och deras funktioner.,6934f1″>

devdevco, matches one character given in the bracket ab aab, bab cab matches one character from the (locale-dependent) range given in the bracket runlevel runlevel1, runlevel2, runlevel6 runlevels, runlevelo

As an example, here’s a way to locate all text files on your system.,

$ locate *.txt

leta upp filer med ett reguljärt uttryck

som anges på den officiella manssidan för locate accepterar lokaliseringskommandot ett mönster som en inmatning.

det betyder att du kan ge ett reguljärt uttryck till kommandot lokalisera.

för att hitta och hitta filer som ges en regex, använd –regex-alternativet för lokaliseringskommandot.,

$ locate --regex <regex>

till exempel, för att isolera alla filer som börjar med runlevel följt av ett nummer, skulle du köra följande kommando.

$ locate --regex runlevel+

När du använder regexes finns det en viktig punkt som du bör vara medveten om när du lokaliserar filer.

lokaliseringskommandot letar efter sökvägar till filer i sin lokala databas.,

När du söker efter filer bör du därför vara medveten om att ditt reguljära uttryck måste matcha sökvägen till filen och inte bara filnamnet.

om jag till exempel letar efter filer som börjar med ”kör” returneras inga resultat eftersom sökvägen till filen börjar med ”/usr”.

leta upp filer med hjälp av skiftlägesintensivt alternativ

När du söker efter filer i filsystemet kanske du inte är säker på hur en viss fil namngavs.,

var det skrivet i versaler eller i gemener? Innehåller den några stora bokstäver alls?

om du vill hitta och hitta filer med ett okänsligt alternativ för kundcase lägger du till-i-alternativet till ditt lokaliseringskommando.,

$ locate -i <file_pattern>

Sök filer efter innehåll med grep

i vissa fall kan du vara intresserad av att söka efter filer som matchar ett visst ord av mening som finns i filen.

det här kan till exempel hända om du försöker hitta filen som innehåller specifika logghändelser.,

det första sättet att söka efter filer som matchar ett visst ord är att använda grep-kommandot

$ grep -r <pattern> <path>

Obs : glöm inte alternativet”- r ” om du söker efter filer via hela kataloger.

till exempel., om du söker efter alla filer som har ” fel ” i deras innehåll, som finns i din hemkatalog, skriver du

$ grep -r error /home/user

i vissa fall kanske du vill hitta filer med ett reguljärt uttryck.

för att hitta filer med ett reguljärt uttryck, använd alternativet ”-E”.,

$ grep -r -E <expression> <path>

låt oss säga till exempel att du vill hitta filen som matchar”abc” – mönstret i en av dina filer, du skulle skriva

$ grep -r -E "abc.*" --color /home/user

Obs! färgalternativet används för att markera matchningar med grep-kommandot.,

hitta filer med vilka

ett annat bra sätt att hitta filer på Linux är att använda vilket kommando.

vilket kommando används för att lokalisera de filer som är associerade med ett specifikt kommando.

detta kan bli mycket praktiskt när du inte vet var du lagrade dina binärer för ett kommando eller om du behöver hitta ett kommando för att lägga till det i din sökväg.,

$ which <command>

för att till exempel söka efter filer som är associerade till kommandot ”ls”, skriver du

$ which ls/usr/bin/ls

som du kan se får du den fullständiga sökvägen till filen.

leta upp binärer med whereis

På samma sätt är det helt möjligt att söka efter filer med kommandot whereis.

kommandot ”whereis” kan ses som en superuppsättning av kommandot ”which”: ”whereis” ger information om namnet på kommandot, filplatsen samt platsen för manualsidorna.,

för att köra whereis, skriv bara ”whereis” och Lägg till namnet på ditt kommando.

$ whereis lsls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

ganska praktiskt!

slutsats

i dagens handledning lärde du dig hur du kan hitta och hitta filer på Linux med två viktiga kommandon : hitta och hitta.

även om alternativet presenterades individuellt, bör du komma ihåg att de kan kombineras för att kunna ange ännu mer de filer du letar efter.

som alltid, om du är intresserad av Linux systemadministration, har vi ett komplett avsnitt dedikerat till Linux på vår hemsida.,

As always, here is a short video on the subject in case you prefer Youtube videos.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *