Deze tutorial richt zich op hoe bestanden op Linux te vinden met behulp van het commando zoeken en lokaliseren.

als systeembeheerder is het een veel voorkomende taak om naar een specifiek bestand op uw bestandssysteem te zoeken.

echter, het kan soms moeilijk zijn om bestanden op een Linux bestandssysteem te vinden, vooral als je tientallen verschillende gebruikers hebt.

Er zijn twee commando ‘ s die u kunnen helpen uw doel te bereiken : zoeken en lokaliseren.,

in deze tutorial gaan we kijken hoe we deze commando ‘ s effectief kunnen gebruiken en hoe ze kunnen worden afgestemd om te bereiken wat we zoeken.

inhoudsopgave

bestanden zoeken met het zoekcommando

De eerste manier om te zoeken en bestanden lokaliseren op een Linux host is om het find commando te gebruiken.,

standaard is het find Commando beschikbaar op alle distributies en heeft het de volgende syntaxis

$ find <options> <path> <expression>

snelle tip: heeft u problemen met het onthouden als pad of expressie eerst komt?

onthoud dat Voor grEP Expressiepad is, en vinden is het tegenovergestelde, dus pad expressie!

Find is een vrij krachtig commando omdat het veel meer opties heeft dan het locate Commando.

Hier zijn alle mogelijkheden van de find-functie op Linux.,

bestanden zoeken met zoeken op bestandsnaam

het meest gebruikte gebruik van de functie Zoeken is het vinden van bestanden met hun bestandsnamen.

$ find <path> -name <pattern>

het belangrijkste verschil tussen zoeken en zoeken bij het zoeken naar bestanden is dat zoeken naar bestandsnamen zal opzoeken terwijl zoeken naar paden naar het bestand zal zoeken.

bijvoorbeeld, als we teruggaan naar het runlevel voorbeeld dat we eerder gebruikten, dan is hier hoe je naar runlevel bestanden zoekt met het find Commando.,

$ find / -name runlevel*
iv id=”2>/dev/null”part?

Ik heb de foutuitvoer omgeleid naar /dev/null om Foutmeldingen op de console te voorkomen.

bestanden zoeken met behulp van zoeken op bestandstype

zoals we eerder hebben besproken in ons artikel over harde en zachte koppelingen, worden bestanden toegewezen bestandstypen en het wordt gebruikt als een manier om ze te onderscheiden.,

Hier is een samenvatting van alle bestandstypen die op Linux worden gebruikt.

  • f : een standaardbestand
  • d : Een map of map
  • l : een symbolische link of een zachte link
  • b : blokapparaten (zoals een harde schijf bijvoorbeeld)
  • c : karakterapparaten (seriële poorten, geluidskaarten)
  • p : named pipe
  • s : socket

Als u al deze bestandstypen kent, kunt u nu om bestanden te zoeken op Bestandstype met de opdracht Zoeken.

$ find <path> -type <filetype>

bijvoorbeeld, als we zoeken naar alle symbolische links op de host, zouden we het volgende commando geven.,

$ find / -type l

Parameters kunnen worden gecombineerd, bijvoorbeeld als ik op zoek ben naar alle symbolische links waarvan de bestandsnamen eindigen op”.service ” (om bijvoorbeeld alle systemd-services te isoleren), zou ik het volgende commando uitvoeren.

$ find / -type l -name *.service

bestanden zoeken met een patroon (voor extensies)

zoek bestanden op Linux met behulp van een patroon.

ter herinnering: een patroon is een tekenreeks die globbing-tekens bevat (zoals*,?,, of ranges).

Deze optie is vooral wanneer u bestanden probeert te vinden die een extensie hebben, bijvoorbeeld Javascript-bestanden.

voer het volgende commando uit

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

bestanden bestanden op linux door eigenaar

soms wilt u bestanden isoleren die door een bepaalde gebruiker zijn gemaakt.

wanneer u een gebruiker op uw host verwijdert, wilt u bijvoorbeeld alle bestanden verwijderen die bij deze gebruiker horen.,

soms maken gebruikers bestanden aan vanuit hun persoonlijke map en is het verwijderen van een persoonlijke map op zichzelf niet voldoende.

als gevolg hiervan, om bestanden te vinden die door een bepaalde gebruiker op Linux zijn aangemaakt, voer je het volgende commando uit

$ find <path> -user <user>

bijvoorbeeld, om alle bestanden te vinden die eigendom zijn van “john” op mijn host, voer ik het volgende commando uit.

$ find / -user john

wat als ik alle bestanden van john met een eenvoudig commando wil verwijderen?,

Het kan eenvoudig worden bereikt met de vlag verwijderen.

$ find / -user john -delete

bestanden op Linux zoeken met permissies

met het commando Zoeken kunt u ook bestanden vinden en lokaliseren met bepaalde permissies op uw host.

$ find <path> -perm <permissions>

als herinnering, hier is hoe bestandsrechten werken op Linux.

om alle bestanden te vinden die volledige rechten hebben (een 777 gegeven de binaire notatie), kunt u het volgende commando uitvoeren.,

$ find / -perm 777

het kan heel handig zijn als u om veiligheidsredenen wilt inspecteren als er geen bestanden zijn geconfigureerd met volledige rechten op uw systeem.

bestanden zoeken met zoeken op grootte

een andere handige manier om bestanden op Linux te vinden is het zoeken commando met de optie grootte.

met de optie grootte kunt u zoeken naar bestanden die precies de grootte zijn die u opgeeft, groter dan een specifieke grootte of lager dan een specifieke grootte.,

om naar bestanden op grootte te zoeken, gebruik het volgende commando

$ find <path> -size <size>

De grootte wordt gedefinieerd door de volgende voorvoegsels :

  • c: bytes
  • b: 512-byteblokken
  • k: Kilobytes
  • M: Megabytes
  • G: Gigabytes

u kunt een “+” opgeven als u bestanden zoekt die groter zijn dan de opgegeven grootte.,

bijvoorbeeld, om bestanden van meer dan 1 GB op uw systeem te vinden, voert u het volgende commando uit

$ find / -size +1G

om bestanden van minder dan 10 MBs op uw systeem te vinden, voert u het volgende commando uit

$ find / -size -10M

ten slotte, om te zoeken naar bestanden die precies de grootte hebben die in de query is opgegeven, moet u geen plus of min toevoegen voorvoegsels bij het commando.

$ find / -size 1024k

het zojuist gedefinieerde commando zal alle bestanden vinden die exact 1024 Kbs groot zijn op uw host.,

zoek bestanden op Linux op wijzigingsdatum

met behulp van de find kunt u ook bestanden vinden met een wijzigingsdatum, recent of niet.

dit commando is erg handig en wordt vaak gebruikt door systeembeheerders om bestanden of mappen te vinden die onlangs zijn gewijzigd.

om bestanden te zoeken met Zoek op wijzigingsdatum, voer het volgende commando uit

$ find <path> -mtime <time>

waar de tijd de gewijzigde bestanden vertegenwoordigt 24*<tijd> uren geleden.

als gevolg daarvan wordt de tijd uitgedrukt in dagen.,

Ook de grootte optie, u kunt toevoegen een “plus” of “min” – operator de tijd om te zoeken naar bestanden die zijn gewijzigd met meer dan <tijd> dagen geleden, of minder dan <tijd> dagen geleden.

bijvoorbeeld, om te zoeken naar bestanden die precies 3 uur geleden zijn gewijzigd, voer je het volgende commando uit.,

$ find / -mtime 3

om bestanden Te vinden gewijzigde meer dan een week geleden, zou u de volgende opdracht uitvoeren

$ find / -mtime +7

om bestanden Te vinden gewijzigd minder dan twee dagen geleden, zal je de volgende opdracht uitvoeren

$ find / -mtime -2

bestanden Zoeken met dynamische diepte

Zoals je waarschijnlijk al gemerkt, sinds het begin van deze handleiding, geven we voorbeelden van bestanden doorzoekt vanaf de root directory.

als gevolg hiervan worden alle mappen recursief doorgebladerd.,

echter, we kunnen het aantal mappen recursief gereisd vanuit een map beperken, dit wordt de diepte genoemd.

om het zoeken naar bestanden tot een bepaalde diepte te beperken, voert u de volgende zoekopdracht uit

$ find <path> -maxdepth <depth>

als voorbeeld, hier is hoe u het zoeken naar bestanden kunt beperken tot de huidige map, zonder dat er door kindermappen wordt gebladerd.

$ find / -maxdepth 1

u kunt dit commando uiteraard combineren met de naamvlag om te zoeken naar bestanden met een bepaalde naam in de huidige map.,

$ find . -maxdepth 1 -name *.tar

Chaining find with-exec

het find commando met de exec one.

de exec-optie kan worden gebruikt om meerdere opdrachten aan elkaar te koppelen : het resultaat van de eerste als invoer van de tweede nemen.,

stel dat u bijvoorbeeld alle bestanden wilt vinden die minder dan een minuut geleden zijn gewijzigd

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

stel nu dat u alle bestanden wilt verwijderen die minder dan een minuut geleden zijn gewijzigd.

u kunt het find Commando chain met de-exec optie met behulp van deze syntaxis.

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

we” echo ” natuurlijk eerst de resultaten als we willen ervoor zorgen dat we zijn het verwijderen van de juiste bestanden.,

wanneer u klaar bent om deze bestanden te verwijderen, verwijdert u gewoon het echo Commando.

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

bestanden zoeken onder Linux met het Locate Commando

een andere goede manier om bestanden te vinden en te lokaliseren onder Linux is door het locate commando te gebruiken.

Prerequisites

als het locate commando niet beschikbaar is op uw systeem, lees dan de volgende sectie om locate draaiend te krijgen op uw systeem.,

A-Locate installeren op Apt-en RPM-gebaseerde distributies

om locate te installeren, hebt u sudo-rechten nodig op uw Linux-host.

om te controleren of locate op uw host is geïnstalleerd, voert u het locate commando uit op de commandoregel.,

$ locate

Als zoek op uw computer is geïnstalleerd, het zal verwachten van een expressie verstrekt

Als zoeken is niet geïnstalleerd op uw gastheer, er wordt een foutbericht weergegeven

om Te installeren op zoek Ubuntu 18.04 en Debian 10, voert u de volgende opdracht.,

$ sudo apt-get install mlocate

Evenzo, als je op een CentOS of Fedora gebaseerde distributie zit, voer je het volgende commando uit om locate te installeren.

$ sudo yum install mlocate

b – uw MLOCATE-database bijwerken

De locate-functie werkt met een lokale database die op uw bestandssysteem is opgeslagen en elke bestandsnaam van uw host opslaat.

bij het uitvoeren van een locate commando, zal locate zoeken in de database die is voorbereid door updatedb voor het bestand waarnaar u zoekt.

periodiek wordt het MLOCATE bijgewerkt door een cron-taak.db bestand voor u om te zoeken naar de meest recente items.,

de database bevindt zich in/var/lib/mlocate / mlocate.standaard wordt db en het updatedb configuratiebestand opgeslagen in /etc / updatedb.conf.

voor nu kunt u de standaardopties verlaten en een eenvoudig updatedb commando uitvoeren zodat uw database kan worden vernieuwd.

$ sudo updatedb

bestanden zoeken met een naampatroon

de meest eenvoudige manier om bestanden op Linux te vinden is om geef een patroon aan het locate Commando.,

standaard is de syntaxis van het locate commando de volgende

$ locate ... ...

Als u op zoek bent naar een bepaald configuratiebestand op uw systeem, is een eenvoudige manier om het te vinden door de volledige bestandsnaam op te geven aan het locate Commando.

$ locate updatedb.conf

zoals u kunt zien, retourneert het locate commando de volledige paden naar het bestand waarnaar ik op zoek ben.,

zoek bestanden in beperkte mappen

soms heeft u geen toegang tot sommige mappen op uw systeem.

als gevolg hiervan kunt u de bestanden die zich daarin bevinden niet vinden.

laten we het voorbeeld nemen van een verboden map met een bestand genaamd “restricted-file”.

om bestanden in beperkte mappen te vinden, moet u het locate commando uitvoeren met sudo privileges.,

$ sudo locate restricted-file

bestanden lokaliseren met behulp van een patroon

met behulp van de opdracht lokaliseren kunt u “patronen” in de vorm opgeven van globbing karakters.

Globbing characters, ook wel jokertekens genoemd, zijn karakters die gebruikt worden om een of meerdere items met een vereenvoudigde expressie te matchen.

de meest populaire is de ” * ” die overeenkomt met elk teken, inclusief geen.

Hier is een overzichtstabel voor globbing karakters en hun functies.,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

bestanden lokaliseren met behulp van een reguliere expressie

zoals vermeld in de officiële man page voor locate, the locate commando accepteert een patroon als invoer.

het betekent dat u in staat bent om een reguliere expressie te geven aan het locate Commando.

gebruik de optie –regex voor het locate commando om bestanden te vinden en te lokaliseren.,

$ locate --regex <regex>

bijvoorbeeld, om alle bestanden te isoleren die beginnen met runlevel gevolgd door een getal, voer je het volgende commando uit.

$ locate --regex runlevel+

bij het gebruik van regexes is er één belangrijk punt dat u moet weten wanneer u bestanden zoekt.

het locate Commando zoekt naar paden naar bestanden in de lokale database.,

als gevolg hiervan moet u bij het zoeken naar bestanden er rekening mee houden dat uw reguliere expressie moet overeenkomen met het pad naar het bestand en niet alleen met de bestandsnaam.

bijvoorbeeld, als ik zoek naar bestanden die beginnen met” run”, zullen er geen resultaten worden geretourneerd als het pad naar het bestand begint met”/usr”.

zoek bestanden met behulp van hoofdletterongevoelige optie

bij het zoeken naar bestanden op uw bestandssysteem weet u misschien niet zeker hoe een bepaald bestand werd genoemd.,

was het geschreven in hoofdletters of in kleine letters? Staan er hoofdletters in?

om bestanden te vinden en te lokaliseren met behulp van een hoofdletterongevoelige optie, voegt u de-i optie toe aan uw locate Commando.,

$ locate -i <file_pattern>

bestanden Zoeken door de inhoud van het gebruik van grep

In sommige gevallen moet u wellicht geïnteresseerd zijn in het zoeken naar bestanden die overeenkomen met een specifiek woord van de zin, die is gevestigd IN het bestand.

dit kan bijvoorbeeld gebeuren als u probeert het bestand te vinden dat specifieke loggebeurtenissen bevat.,

de eerste manier om te zoeken naar bestanden die overeenkomen met een specifiek woord is met behulp van het grep Commando

$ grep -r <pattern> <path>

Opmerking : Vergeet de optie “-r” niet als u bestanden door hele mappen zoekt.

bijvoorbeeld., als u alle bestanden met “error” in hun inhoud zoekt, die zich in uw persoonlijke map bevinden, typt u

$ grep -r error /home/user

In sommige gevallen kunt u misschien wilt u bestanden vinden met een reguliere expressie.

om bestanden te vinden met een reguliere expressie, gebruik je de optie “- E”.,

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

laten we bijvoorbeeld zeggen dat u het bestand wilt vinden dat overeenkomt met het ‘abc’ – patroon in een van uw bestanden, dan typt u

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

opmerking : de Kleuroptie wordt gebruikt om overeenkomsten te markeren met het grep-Commando.,

bestanden zoeken met behulp van welke

een andere goede manier om bestanden op Linux te vinden is door het commando which te gebruiken.

het commando welke wordt gebruikt om de bestanden te lokaliseren die bij een specifiek commando horen.

dit kan erg handig worden als u niet weet waar u uw binaries voor een commando hebt opgeslagen of als u een commando moet vinden om het aan uw pad toe te voegen.,

$ which <command>

bijvoorbeeld, om te zoeken naar bestanden die geassocieerd zijn met het” ls”commando, typt u

$ which ls/usr/bin/ls

zoals u kunt zien, krijgt u het volledige pad naar het bestand.

zoek binaries met whereis

Op dezelfde manier is het volledig mogelijk om naar bestanden te zoeken met het whereis Commando.

het commando ” whereis “kan gezien worden als een superset van het commando” which”:” whereis ” geeft informatie over de naam van het commando, de locatie van het bestand en de locatie van de handleidingen.,

om whereis uit te voeren, typt u “whereis” en voegt u de naam van uw commando toe.

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

vrij handig!

conclusie

in de tutorial van vandaag heb je geleerd hoe je bestanden op Linux kunt vinden en lokaliseren met behulp van twee belangrijke commando ‘ s : lokaliseren en zoeken.

zelfs als de optie afzonderlijk werd gepresenteerd, moet u onthouden dat ze kunnen worden gecombineerd om nog meer bestanden te kunnen specificeren waarnaar u op zoek bent.

zoals altijd, als je geïnteresseerd bent in Linux systeembeheer, hebben we een complete sectie gewijd aan Linux op onze website.,

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

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *