Vaak is het nodig om naar bepaalde soorten bestanden in Linux-omgevingen te zoeken en weten we niet de juiste manier om ze goed te doorzoeken zonder tijd te verspillen.
Voor Linux-distributies is een commando genaamd find ontwikkeld dat is ontwikkeld om recursief objecten in het bestandssysteem te filteren op basis van een voorwaardelijk mechanisme. Met dit find-commando kunnen we zoeken naar een bestand of map in zijn bestandssysteem.
Als we de parameter -exec opnemen, kunnen de bestanden direct binnen dezelfde opdracht worden gevonden en verwerkt.
1. Bestanden zoeken op naam of extensie Linux-commando's
We kunnen zoeken vanaf de opdrachtregel gebruiken om een specifiek bestand op naam of extensie te zoeken.
De syntaxis is:
zoek / home / gebruikersnaam / -naam "* .extensie"We zoeken bijvoorbeeld naar bestanden die eindigen op .gz:
VERGROTEN
2. Handige commando's en syntaxis om te gebruiken met Linux-commando's zoeken
Met het find commando hebben we enkele parameter opties zoals:
zoek opties start / pad expressieHet options attribuut regelt het gedrag en de optimalisatiemethode van het zoekproces. Het attribuut home / path definieert de map op het hoogste niveau waar zoeken wordt gefilterd.
Het kenmerk expression bestuurt de tests die de directoryhiërarchie doorzoeken om uitvoer te produceren.
We kunnen bijvoorbeeld het volgende uitvoeren:
zoek -O3 -L / var / www / -name "* .html"Deze opdracht activeert het maximale optimalisatieniveau (-O3) en stelt u in staat de symbolische links (-L) te volgen om de volledige mappenboom op het pad / var / www / te doorzoeken naar bestanden die eindigen op .html.
VERGROTEN
3. Opties en optimalisatie met Find Linux-commando's
De standaardconfiguratie van Find om te zoeken negeert de symbolische koppelingen (snelkoppelingsbestanden), als we willen dat zoeken de symbolische koppelingen volgt en neemt, kunnen we de -L-optie aan de opdracht toevoegen zoals we eerder zagen. Find heeft drie (3) optimalisatieniveaus, namelijk -O1, -O2 en -O3.
De -O1-optimalisatie is de standaard en dwingt u te zoeken om te filteren op bestandsnaam voordat u alle andere tests uitvoert.
Optimalisatie op het -O2-niveau geeft prioriteit aan bestandsnaamfilters, zoals in -O1, en voert vervolgens alle bestandstypefilters uit voordat verder wordt gegaan met andere, meer resource-intensieve voorwaarden. De -O3-niveau-optimalisatie maakt het mogelijk om een diepere optimalisatie uit te voeren en alle tests opnieuw te ordenen op basis van hun relatieve uitgaven en de kans op betere resultaten.
Enkele van de opties zijn:
Het is een filter gebaseerd op de eerste bestandsnaam
-O1 (Standaard)
Gebruik eerst de bestandsnaam en dan het bestandstype
-O2
Resultaten opnieuw ordenenMaakt het zoeken mogelijk om de zoekopdracht automatisch opnieuw te ordenen op basis van efficiënt gebruik van bronnen en de kans op betere resultaten.
-O3
Doorzoekt de huidige map en alle submappen X-niveaus diep
-maxdiepte X
Zoek ongeacht het geval van tekst
-ik noem
Retourneert alleen de resultaten die niet overeenkomen met de testcase
-niet
Een bestandszoekopdracht uitvoeren
-type f
Zoek mappen
-type d
4. Bestanden zoeken op basis van tijdswijziging Linux-commando's
De opdracht find heeft de mogelijkheid om een directoryhiërarchie te filteren op basis van de laatste wijziging van het bestand.
De syntaxis is:
find / -name "* conf" -mtime 8 find / home / gebruiker / -name "* conf" -mtime 2De eerste opdracht geeft een lijst weer van alle bestanden in het hele bestandssysteem die eindigen op conf-tekens en die in de afgelopen 8 dagen zijn gewijzigd. De tweede opdracht filtert de thuismap van de gebruiker op bestanden met namen die eindigen op conf-tekens en die in de afgelopen 2 dagen zijn gewijzigd.
Gebruik Grep om op inhoud gebaseerde bestanden te vinden Linux-opdrachtenDe opdracht find kan de directoryhiërarchie alleen filteren op basis van een bestandsnaam en metagegevens, dus als u moet zoeken op basis van bestandsinhoud, gebruikt u een tool zoals grep.
We zullen de volgende syntaxis gebruiken:
vinden. -type f -exec grep "voorbeeld" '{}' \; -afdrukkenDit vindt alle objecten in de huidige directoryhiërarchie (.) Dat is een bestand (-type f) en voert vervolgens het grep-commando "example" uit voor elk bestand dat aan de voorwaarden voldoet. Overeenkomende bestanden worden op het scherm afgedrukt (-print). Bretels ({}) zijn een tijdelijke aanduiding voor de zoekresultaten. De {} staat tussen enkele aanhalingstekens (') om te voorkomen dat grep een verkeerd opgemaakte bestandsnaam weergeeft. Het -exec commando wordt afgesloten met een puntkomma "(;)", die moet worden weggelaten met "(\;)" om interpretatie door de shell te voorkomen.
Bestanden zoeken en verwerken met behulp van de opdracht Zoekopdracht Linux-opdrachtenWe kunnen de optie -exec gebruiken om opdrachten uit te voeren voor alle objecten die overeenkomen met de zoekexpressie.
De syntaxis is:
vinden. -name "rc.conf" -exec chmod o + r '{}' \;Dit filtert alle objecten in de huidige hiërarchie (.) Voor bestanden met de naam rc.conf en voert de opdracht chmod of + r uit om de machtigingen van de zoekresultaten te wijzigen.
Dus find is een bondgenoot voor het volledig zoeken naar bestanden op Linux.