Hoe bestanden in Linux te vinden met behulp van de opdrachtregel

find is een opdracht voor het recursief filteren van objecten in het bestandssysteem gebaseerd op een eenvoudig voorwaardelijk mechanisme. Gebruik find om naar een bestand of map op uw bestandssysteem te zoeken. Met de-exec vlag kunnen bestanden gevonden en direct verwerkt worden binnen hetzelfde commando.,

Find Linux Files by Name or Extension

Use find from the command line to locate a specific file by name or extension., Het volgende voorbeeld zoekt voor *.err bestanden in de /home/username/ map en alle onderliggende mappen:

find /home/username/ -name "*.err"

ziet U een vergelijkbare output in de console:

 /home/username/example.errThe matching file in the /home/username/ directory is "example.err"

Algemene Linux-Opdrachten en Syntaxis

De find commando neemt meestal de volgende vorm:

find options starting/path expression
  • De options attribuut bepaalt het gedrag en optimalisatie van de methode van de find proces.,
  • hetstarting/path attribuut definieert de top level directory waarfind begint met filteren.
  • hetexpression attribuut controleert de tests die in de mappenhiërarchie Zoeken om uitvoer te produceren.

zoek een bestand in Linux met de bestandsnaam

om een bestand met de bestandsnaam te vinden, gebruik je de syntaxis find -name filename. Het weglaten van het pad zoekt naar het bestand over de hele schijf., U kunt bijvoorbeeld een bestand met de naam example.err vinden in uw /home/username map met het volgende commando:

find -name example.err

u zou een vergelijkbare uitvoer moeten zien:

 ./username/example.err

zoek een bestand in uw huidige map met het find Commando

kijk eens naar de voorbeeldmap structuur en bestanden. In de voorbeelden van deze gids wordt hiernaar verwezen.,wilt vinden in het bestand example.err in de directory of een van de submappen, kunt u het volgende commando:

find . -name example.err

de output lijkt op het volgende:

 ./example.err./directory_1/example.err

De uitvoer weerspiegelt directory_1 directory structuur:

 ├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err

Vind Image Bestanden, in Linux Gebruik van de commandoregel

Verwijzen naar de structuur van het bestand in de vorige paragraaf, is er een beeld met de naam image01.png die zich in de root (/)s van de directory-structuur.,

om het bestand image01.png te vinden, voer je het volgende find commando uit dat alle .png bestanden in de / map lokaliseert.

find -name *.png

u zou een soortgelijke uitvoer moeten zien:

 ./image01.png

Wijzig het afbeeldingsbestandstype en zoek naar alle .jpg bestanden binnen de rootdirectory (/):

find -name *.jpg

de uitvoer lijkt op het voorbeeld., Refereer naar de voorbeeldmap structuur in de vorige sectie om de locatie van het bestand te bekijken.

 ./web_files/unnamed.jpg

zoek een leeg bestand in uw map met behulp van de opdrachtregel

om een leeg bestand in uw map te vinden met behulp van de opdrachtregel, voer het volgende commando uit:

find . -type f -empty

als er geen uitvoer wordt geretourneerd, dan is er geen leeg bestand in uw huidige map.

opties en optimalisaties voor het vinden van bestanden in Linux met behulp van de opdrachtregel

De Standaard configuratie voor find ignoressymbolic links., Als u wilt dat find symbolische koppelingen volgt en retourneert, voeg dan de optie -L toe aan het commando, zoals hieronder getoond:

find -O3 -L /var/www/ -name "*.html"

Dit commando schakelt het maximale optimalisatieniveau in (-O3) en staat find om symbolische koppelingen te volgen (-L). find doorzoekt de gehele mapstructuur onder /var/www/ naar bestanden die eindigen met .html.,

find optimaliseert zijn filterstrategie om de prestaties te verhogen. Drie door de gebruiker te selecteren optimalisatieniveaus worden gespecificeerd als -O1, -O2, en -O3. De-O1 optimalisatie is de standaard en dwingt find om te filteren op basis van bestandsnaam voordat alle andere tests worden uitgevoerd.,

optimalisatie op het -O2 niveau geeft prioriteit aan bestandsnaamfilters, zoals in -O1, en voert dan alle bestandstype filtering uit voordat u verder gaat met andere, meer resource-intensieve omstandigheden. Niveau -O3 optimalisatie staat find toe om de meest ernstige optimalisatie uit te voeren en alle tests opnieuw te ordenen op basis van hun relatieve kosten en de waarschijnlijkheid van succes.,

Command Description
-O1 Filter based on filename first (default).
-O2 File name first, then file-type.,
-O3 sta find toe om de zoekopdracht automatisch opnieuw te ordenen op basis van efficiënt gebruik van hulpbronnen en waarschijnlijkheid. of success
-maxdepth X Doorzoek de huidige map en alle submappen X levels deep.
-iname zoeken zonder rekening te houden met tekstcases.,
-not Return only results that do not match the test case.
-type f Search for files.
-type d Search for directories.,

bestanden in Linux Zoeken Door Modificatietijd met behulp van de opdrachtregel

de opdracht find kan een maphiërarchie filteren op basis van wanneer een bestand voor het laatst is gewijzigd., Bijvoorbeeld, het volgende commando vindt elk bestand met de .err extensie die in de laatste 7 dagen is gewijzigd:

find / -name "*err" -mtime -7

het voorbeeld commando geeft de volgende uitvoer:

gebruik Grep om bestanden in Linux te vinden met behulp van de opdrachtregel

de find de opdracht kan alleen de mappenhiërarchie filteren op basis van de naam en de metagegevens van een bestand. Als je moet zoeken op basis van de inhoud van het bestand, gebruik dan een tool alsegrep., Neem het volgende voorbeeld:

find . -type f -exec grep "test" '{}' \; -print

Dit commando doorzoekt elk object in de huidige mappenhiërarchie (.) dat een bestand is (-type f) en voert dan het commando grep "test" uit voor elk bestand dat aan de voorwaarden voldoet. De bestanden die overeenkomen worden afgedrukt op het scherm (-print). De accolades ({}) zijn een plaatshouder voor de zoekresultaten., De {} zijn ingesloten in enkele aanhalingstekens (') om te voorkomen dat grep een onjuiste bestandsnaam wordt doorgegeven. Het commando -exec wordt beëindigd met een puntkomma (;), die moet worden ontsnapt (\;) om interpretatie door de shell te voorkomen.

het bestand dat in het voorbeeld wordt gebruikt (example.err) bevat tekst die “test”zegt., Wanneer u het voorbeeld commando uitvoert, ziet u een vergelijkbare uitvoer:

Grep identificeerde elk bestand in de huidige werkmap dat de string “test”bevat.,

Opmerking

Voor de find commando ‘ s implementatie van de -exec optie, je kan het genereren van een vergelijkbare output naar het bovenstaande voorbeeld met behulp van de xargs commando:

find . -type f -print | xargs grep "test"

Proces en het Vinden van Bestanden met Behulp van de Opdracht Zoeken in Linux

De -exec optie opdrachten worden uitgevoerd tegen elk object dat overeenkomt met de find expressie., Neem het volgende voorbeeld:

find . -name "example.err" -exec chmod o+r '{}' \;

Dit filtert elk object in de huidige hiërarchie (.) voor bestanden met de naam rc.conf en voert het commando chmod o+r uit om de bestandsrechten van resultaten van de opdracht.

het voorbeeld commando voert de optie -exec uit in de root directory van het find proces. Gebruik -execdir om het opgegeven commando uit te voeren in de map waar de Overeenkomst zich bevindt., Dit kan de veiligheidsproblemen verlichten en voor sommige operaties betere prestaties opleveren.

de opties -exec of -execdir draaien zonder verdere aanwijzingen. Als u liever wordt gevraagd voordat actie wordt ondernomen, vervang dan -exec door -ok of -execdir door -okdir.

hoe bestanden te vinden en te verwijderen met behulp van de Linux opdrachtregel

voorzichtigheid

Gebruik deze optie met uiterste voorzichtigheid.,

voeg de optie -delete toe aan het einde van een overeenkomende expressie om alle overeenkomende bestanden te verwijderen. Gebruik deze optie als u er zeker van bent dat de resultaten Alleen overeenkomen met de bestanden die u wilt verwijderen.

in het voorbeeld hieronder vindt find recursief alle bestanden in de hiërarchie vanaf de huidige map en verwijdert alle bestanden die eindigen met de .err extensie:

find . -name "*.err" -delete

hebben nog steeds een paar vragen?,

Word lid van onze Community en plaats uw vragen voor andere Linode-en Linux-enthousiastelingen om u te helpen.

gerelateerde vragen:

Geef een reactie

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