Android

Hoe bestanden te vinden in Linux met behulp van de opdrachtregel

Linux Commands for Beginners 16 - Output Redirection

Linux Commands for Beginners 16 - Output Redirection

Inhoudsopgave:

Anonim

De opdracht find is een van de krachtigste tools in het arsenaal van Linux-systeembeheerders. Het zoekt naar bestanden en mappen in een maphiërarchie op basis van een door de gebruiker opgegeven expressie en kan door de gebruiker opgegeven actie uitvoeren op elk gekoppeld bestand.

U kunt de opdracht find gebruiken om naar bestanden en mappen te zoeken op basis van hun machtigingen, type, datum, eigendom, grootte en meer. Het kan ook worden gebruikt in combinatie met andere hulpmiddelen zoals grep of sed .

Linux find Command Syntax

De algemene syntaxis voor de opdracht find is als volgt:

find

  • Het attribuut options regelt de behandeling van de symbolische koppelingen, foutopsporingsopties en optimalisatiemethode path… kenmerk path… definieert de startmap of mappen waarin find de bestanden doorzoekt. Het expression bestaat uit opties, zoekpatronen en acties gescheiden door operatoren.

Om naar bestanden in een map te zoeken, moet de gebruiker die de opdracht find leesrechten op die map hebben.

Laten we het volgende voorbeeld bekijken:

find -L /var/www -name "*.js"

  • De optie -L (opties) vertelt de opdracht find om symbolische koppelingen te volgen. /var/www (pad…) geeft de map aan waarnaar wordt gezocht. De (expressie) -name "*.js vertelt find om bestanden te zoeken die eindigen op .js (JavaScript-bestanden).

Bestanden zoeken op naam

Bestanden zoeken op naam is waarschijnlijk het meest voorkomende gebruik van de opdracht find . Als u een bestand op naam wilt gebruiken, volgde de optie -name de naam van het bestand dat u zoekt.

Als u bijvoorbeeld naar een bestand met de naam document.pdf in de map /home/linuxize , gebruikt u de volgende opdracht:

find /home/linuxize -type f -name document.pdf

Als u een hoofdletterongevoelige zoekopdracht wilt uitvoeren, wijzigt u de optie -name met -iname :

find /home/linuxize -type f -iname document.pdf

De bovenstaande opdracht komt overeen met "Document.pdf", "DOCUMENT.pdf"..etc.

Bestanden zoeken op extensie

Zoeken naar bestanden op extensie is hetzelfde als zoeken naar bestanden op naam. Als u bijvoorbeeld alle bestanden wilt vinden die eindigen op .log.gz in de map /var/log/nginx , kunt u het volgende gebruiken:

find /var/log/nginx -type f -name '*.log.gz'

Het is belangrijk om te vermelden dat wanneer u het jokerteken gebruikt, u het patroon moet citeren of moet ontsnappen aan het asterisk * -symbool met backslash \ zodat het niet wordt geïnterpreteerd door de shell.

Om alle bestanden te vinden die niet overeenkomen met de regex *.log.gz , kunt u de optie *.log.gz gebruiken. Als u bijvoorbeeld alle bestanden wilt vinden die niet eindigen op *.log.gz u:

find /var/log/nginx -type f -not -name '*.log.gz'

Zoek bestanden op type

Soms moet u mogelijk naar specifieke bestandstypen zoeken, zoals normale bestanden, mappen of symlinks. In Linux is alles een bestand.

Gebruik de optie -type en een van de volgende descriptoren om het bestandstype op te geven om bestanden te zoeken op basis van hun type:

  • f : een normaal bestand d : directory l : symbolische link c : karakterapparaten b : blokkeerapparaten p : named pipe (FIFO) s : socket

Als u bijvoorbeeld alle mappen in de huidige werkmap wilt vinden, gebruikt u:

find. -type d

Het gebruikelijke voorbeeld zou zijn om de websitebestanden van de website recursief te wijzigen in 644 en mapmachtigingen in 755 met behulp van de opdracht chmod :

find /var/www/my_website -type d -exec chmod 0755 {} ; find /var/www/my_website -type f -exec chmod 0644 {} ;

Bestanden zoeken op grootte

Om bestanden te vinden op basis van de bestandsgrootte, geeft u de parameter -size door met de criteria voor de grootte. U kunt de volgende achtervoegsels gebruiken om de bestandsgrootte op te geven:

  • b : blokken van 512 bytes (standaard) c : bytes w : woorden van twee bytes k : kilobytes M : megabytes G : gigabytes

De volgende opdracht vindt alle bestanden van exact 1024 bytes in de map /tmp :

find /tmp -type f -size 1024c

Met find opdracht Zoeken kunt u ook zoeken naar bestanden die groter of kleiner zijn dan een opgegeven grootte.

In het volgende voorbeeld zoeken we naar alle bestanden van minder dan 1MB in de huidige werkmap. Let op het minteken - symbool voor de maatwaarde:

find. -type f -size -1M

find. -type f -size +1M

U kunt zelfs zoeken naar bestanden binnen een groottebereik. De volgende opdracht vindt alle bestanden tussen 1 en 2MB :

find. -type f -size +1M -size 21M

Bestanden zoeken op wijzigingsdatum

Met find opdracht Zoeken kunt u ook naar bestanden zoeken op basis van hun laatste wijziging, toegang of wijzigingsduur.

Hetzelfde als bij het zoeken op grootte, gebruik de plus- en mintekens voor "groter dan" of "kleiner dan".

Laten we zeggen dat u enkele dagen geleden een van de configuratiebestanden voor de duiventil hebt gewijzigd, maar dat u bent vergeten welke. Je kunt eenvoudig alle bestanden filteren in de map /etc/dovecot/conf.d die eindigen op .conf en in de afgelopen vijf dagen zijn gewijzigd met:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

Hier is nog een voorbeeld van het filteren van bestanden op basis van de wijzigingsdatum met de optie -daystart . Met de onderstaande opdracht worden alle bestanden in de map /home die 30 dagen of langer geleden zijn gewijzigd:

find /home -mtime +30 -daystart

Bestanden zoeken op machtigingen

Met de optie -perm kunt u naar bestanden zoeken op basis van de bestandsmachtigingen.

Als u bijvoorbeeld alle bestanden met rechten van exact 775 in de map /var/www/html wilt vinden, gebruikt u:

find /var/www/html -perm 644

U kunt de numerieke modus voorafgaan door min - of slash / .

Als slash / wordt gebruikt als het voorvoegsel, moet ten minste één categorie (gebruiker, groep of andere) ten minste de respectieve bits hebben ingesteld voor een overeenkomend bestand.

Overweeg de volgende voorbeeldopdracht:

find. -perm /444

De bovenstaande opdracht zal overeenkomen met alle bestanden met leesrechten ingesteld voor gebruiker, groep of anderen.

Als min - als het voorvoegsel wordt gebruikt, moeten het opgegeven bestand minimaal overeenkomen met de opgegeven bits. De volgende opdracht zoekt naar bestanden die lees- en schrijfrechten hebben voor de eigenaar en groep en leesbaar zijn door andere gebruikers:

find. -perm -664

Bestanden zoeken op eigenaar

Gebruik de opties -user en -group om bestanden te vinden die eigendom zijn van een bepaalde gebruiker of groep.

Als u bijvoorbeeld wilt zoeken naar alle bestanden en mappen die eigendom zijn van de gebruiker linuxize , zou u het volgende uitvoeren:

find / -user linuxize

Hier is een real-world voorbeeld. Stel dat u alle bestanden wilt vinden die eigendom zijn van de gebruiker www-data en het eigendom van de overeenkomende bestanden wilt wijzigen van www-data naar nginx :

find / -user www-data -type f -exec chown nginx {} ;

Bestanden zoeken en verwijderen

Om alle overeenkomende bestanden te verwijderen, voegt u de optie -delete aan het einde van de overeenkomstuitdrukking.

Zorg ervoor dat u deze optie alleen gebruikt als u zeker weet dat het resultaat overeenkomt met de bestanden die u wilt verwijderen. Het is altijd een goed idee om de overeenkomende bestanden af ​​te drukken voordat u de optie -delete .

Als u bijvoorbeeld alle bestanden die eindigen op .temp uit het /var/log/ wilt verwijderen, gebruikt u:

find /var/log/ -name `*.temp` -delete Gebruik de optie -delete met uiterste voorzichtigheid. De opdrachtregel wordt gevonden als een uitdrukking en als u eerst de optie -delete , verwijdert de opdracht alles onder de opgegeven startpunten.

Als het gaat om mappen, kan Find alleen lege mappen verwijderen die hetzelfde zijn als rmdir .

Conclusie

We hebben u laten zien hoe u de opdracht Zoeken kunt gebruiken met verschillende opties en criteria.

Dit artikel zou u een fundamenteel inzicht moeten geven in hoe u bestanden op uw Linux-systemen kunt lokaliseren. U kunt ook de vindman-pagina bezoeken en meer lezen over alle andere krachtige opties van de opdracht zoeken.

zoek terminal