bijgewerkt: 11/30/2020 by Computer Hope

In Linux-besturingssystemen kan het commando Zoeken worden gebruikt om naar bestanden en mappen op uw computer te zoeken. Om verder te gaan, selecteert u een link uit de volgende lijst of gaat u door elke sectie in volgorde.

Note

om find te gebruiken, Begin met het openen van een terminalsessie om toegang te krijgen tot de opdrachtregel.

basisfunctionaliteit van find

het uitvoeren van find zonder opties geeft een lijst van elk bestand en map in en onder de werkmap., Bijvoorbeeld, als je werkmap /home/hope/Documents is, geeft het uitvoeren van find het volgende uit:

  • elk bestand in /home/hope/Documents.
  • elke submap in / home/hope / Documents.
  • elk bestand in elk van deze submappen.

laten we het in actie zien., Laten we eerst onze werkmap controleren met het PWD Commando:

pwd
/home/hope/Documents

nu draaien we find without any options:

find

in dit voorbeeld zien we in totaal tien bestanden en vier submappen in en onder onze map Documenten.

merk op dat de uitvoer begint met een enkele punt, die de werkmap vertegenwoordigt., Het uitvoeren van find zonder opties is hetzelfde als opgeven dat de zoekopdracht moet beginnen in de werkmap, zoals dit:

find .

het voorbeeld hierboven is de “juiste” manier om find te gebruiken. Als je het probeert te gebruiken op een ander Unix-achtig besturingssysteem, zoals FreeBSD, is het opgeven van een map vereist. Het is een goede gewoonte om deze vorm van het commando te gebruiken.,

Specificeer waar te zoeken

om alleen bestanden en submappen te tonen die zich in de map /home/hope/Documents/images bevinden, specificeer het eerste argument van het commando als:

find /home/hope/Documents/images

merk op dat het volledige pad ook in de resultaten wordt getoond.,

als onze werkmap /home/hope/Documents is, kunnen we het volgende commando gebruiken, dat dezelfde bestanden vindt:

find ./images

maar deze keer geeft de uitvoer de startlocatie van de zoekopdracht weer en ziet het er als volgt uit:

standaard ziet de zoekopdracht er in elke submap van uw startlocatie uit. Als u wilt beperken hoeveel niveaus van subdirectory om te zoeken, kunt u de-maxdepth optie met een nummer gebruiken.

bijvoorbeeld, het specificeren van-maxdepth 1 zoekt alleen in de map waar de zoekopdracht begint., Als er submappen worden gevonden, worden ze weergegeven, maar niet doorzocht.,

find . -maxdepth 1
../images./bigfiles.txt./gimp-2.8.16.tar.bz2./hp-fanfic./archlinux-2016.02.01-dual.iso

U-maxdepth 2 zoekt de directory een subdirectory diep:

find . -maxdepth 2

U-maxdepth 3 zoekt een niveau dieper dan dat:

find . -maxdepth 3

Zoeken op naam

Om uw zoekresultaat beperken tot alleen overeen met bestanden en mappen die hebben een bepaalde naam, gebruikt u de optie naam en de naam tussen aanhalingstekens:

find . -name "picard.jpg"
./images/memes/picard.jpg

U kunt ook jokertekens gebruiken als onderdeel van uw bestand., Bijvoorbeeld, om alle bestanden waarvan de naam eindigt in te vinden .jpg, kunt u een sterretje gebruiken om de rest van de bestandsnaam weer te geven. Wanneer u het commando uitvoert, zal de shell de bestandsnaam in iets glob dat overeenkomt met het patroon:

find . -name "*.jpg"
./images/hp/snape.jpg./images/hp/harry.jpg./images/memes/winteriscoming.jpg./images/memes/picard.jpg

merk op dat ons commando niet een lijst van het bestand waarvan de extensie (in dit geval, JPG) is in hoofdletters. Dat komt omdat in tegenstelling tot andere besturingssystemen, zoals Microsoft Windows, Linux bestandsnamen zijn hoofdlettergevoelig.,”>

Om een lijst van mappen alleen en het weglaten van bestandsnamen opgeven -type d:

find . -type d
../images./images/hp./images/memes./hp-fanfic

het Vinden van bestanden op basis van de grootte

bijvoorbeeld, om te zoeken naar bestanden die groter zijn dan 50 kb”, gebruik -size +50k:

find . -size +50k
./images/memes/winteriscoming.jpg./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

Voor bestanden “groter dan 10 mb”, gebruik -size +10M:

find . -size +10M
./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

Voor “groter dan 1 gigabyte”, gebruik -size +1G:

find . -size +1G
./archlinux-2016.02.01-dual.iso

Voor bestanden in een bepaalde grootte bereik, het gebruik van twee grootte-opties., Bijvoorbeeld, om bestanden te vinden “groter dan 10 megabytes, maar kleiner dan 1 gigabyte”, specificeer-size +10M-size-1G:

find . -size +10M -size -1G
./gimp-2.8.16.tar.bz2

bestanden zoeken op basis van wijziging, toegang of statuswijziging

De optie-mtime beperkt het zoeken met hoeveel dagen sinds de inhoud van het bestand is gewijzigd. Gebruik een negatief getal om dagen in het verleden op te geven., Om bijvoorbeeld alleen die bestanden te vinden die in de afgelopen twee dagen (48 uur geleden) zijn gewijzigd, gebruik je-mtime -2:

find . -mtime -2

De optie-mmin doet hetzelfde, maar in termen van minuten, Niet dagen. Dit commando toont bijvoorbeeld alleen bestanden die in het afgelopen half uur zijn gewijzigd:

find . -mmin -30

een vergelijkbare optie is-ctime, die controleert wanneer de status van een bestand voor het laatst is gewijzigd, gemeten in dagen. Een statuswijziging is een wijziging in de metadata van het bestand. Bijvoorbeeld, het wijzigen van de machtigingen van een bestand is statuswijziging.,

de optie-cmin zoekt naar een statuswijziging, gemeten in minuten.

u kunt ook zoeken wanneer een bestand voor het laatst werd geopend — met andere woorden, wanneer de inhoud het laatst werd bekeken. De optie-atime wordt gebruikt om bestanden te zoeken op basis van hun meest recente toegangstijd, gemeten in dagen.

de optie-amin voert dezelfde zoekbeperking uit, maar wordt gemeten in minuten.

uitvoer omleiden naar een tekstbestand

Als u een zeer grote zoekopdracht uitvoert, wilt u misschien uw zoekresultaten opslaan in een bestand, zodat u de resultaten later kunt bekijken., U kunt dit doen door uw zoekuitvoer om te leiden naar een bestand:

find . -iname "*.jpg" > images.txt

u kunt dan uw resultaten openen in een teksteditor, of ze afdrukken met het cat-Commando.

cat images.txt

u kunt Ook pijp je de uitgang van het tee commando, dat drukt de output naar het scherm en het schrijven naar een bestand:

find . -size +500M | tee bigfiles.txt
./archlinux-2016.02.01-dual.iso
cat bigfiles.txt
./archlinux-2016.02.01-dual.iso

het Onderdrukken van foutberichten

U ontvangt het foutbericht “Permission denied” wanneer u een zoekopdracht uitvoert., Bijvoorbeeld, als je de root directory als een normale gebruiker zoekt:

find /

dan krijg je die foutmelding als find probeert toegang te krijgen tot een bestand dat je gebruikersaccount niet heeft om te lezen. U kunt de zoekopdracht uitvoeren als de superuser (root), die volledige toegang heeft tot elk bestand op het systeem. Maar het is niet aan te raden om dingen te doen als root, tenzij er geen andere opties.,

Als u alleen de “Permission denied” berichten hoeft te verbergen, kunt u 2&>1 | grep-v “Permission denied” toevoegen aan het einde van uw commando, als volgt:

find / 2>&1 | grep -v "Permission denied"

het bovenstaande voorbeeld filtert de “Permission denied” berichten uit uw zoeken. Hoe?

2>&1 is een speciale redirect die foutmeldingen naar de standaarduitvoer stuurt om de gecombineerde uitvoerregels naar het grep-commando te leiden., grep-v voert vervolgens een inverse match uit op “Permission denied”, waarbij alleen regels worden weergegeven die die string niet bevatten.

het omleiden en gebruiken van grep om de foutmeldingen te filteren is een nuttige techniek wanneer “Permission denied” uw zoekresultaten verstikt en u de zoekopdracht niet als root kunt uitvoeren.

voorbeelden

find ~/. -name "*.txt" -amin -120

Zoek alle bestanden in uw persoonlijke map en hieronder die eindigen in de extensie”.txt”. Alleen bestanden weergeven die de afgelopen twee uur zijn geopend.,

find . -name "*.zip" -size +10M -mtime -3

Zoek alle bestanden in de werkmap en hieronder waarvan de naam de extensie heeft”.zip ” en waarvan de grootte groter is dan 10 megabytes. Alleen bestanden weergeven waarvan de inhoud in de laatste 72 uur is gewijzigd.

find . -iname "*report*" -type f -maxdepth 2

zoek hoofdlettergevoelig naar bestanden die het woord” report ” in hun naam bevatten. Als de zoekopdracht een map met “rapport” in zijn naam vindt, laat deze dan niet zien. Zoek alleen in de werkmap, en een directory niveau eronder.,

find / -name "*init*" 2>&1 | grep -v "Permission denied" | tee ~/initfiles.txt

Zoek alle bestanden op het systeem waarvan de naam” init ” bevat, het onderdrukken van foutmeldingen. Toon resultaten op het scherm en output ze naar een bestand in uw home directory met de naam “initfiles.txt”.