Geekflare wordt ondersteund door ons publiek. We kunnen affiliate commissies verdienen met het kopen van links op deze site.
In Linux Laatst bijgewerkt: 23 september 2023
Deel op:
Invicti beveiligingsscanner voor webtoepassingen - de enige oplossing die automatische verificatie van kwetsbaarheden levert met Proof-Based Scanning™.

Het Linux find commando is een krachtig hulpmiddel waarmee systeembeheerders bestanden en mappen kunnen vinden en beheren op basis van een groot aantal zoekcriteria. Het kan mappen en bestanden vinden op naam, type of extensie, grootte, rechten, enz

Naast het lokaliseren van bestanden en mappen, kunt u door het commando find met andere commando’s te combineren actie ondernemen op de resultaten. Door de optie -exec toe te voegen, kunnen sysadmins externe commando’s uitvoeren en acties uitvoeren zoals kopiëren, verplaatsen, verwijderen of machtigingen wijzigen van bestanden die aan de opgegeven criteria voldoen, zoals grootte, naam, enz

In dit artikel zullen we beginnen met het uitleggen van de basis Linux find commando’s met voorbeelden. Dit zal u laten zien hoe u bestanden en mappen kunt vinden. Daarna laten we zien hoe u de -exec optie kunt gebruiken om op de bestanden of mappen te reageren op basis van hun grootte, rechten, enz

De algemene syntaxis voor de opdracht find is

find {pad} {naam -of-bestand of map-om-te-zoeken} {actie te ondernemen}

Waar,

  • pad de map specificeert.
  • naam van bestand of te zoeken directory: naam van het bestand of de directory waarnaar gezocht moet worden
  • te ondernemen actie: zoals kopiëren, verwijderen, verplaatsen, enz.

In deze zelfstudiegids zullen we uitleggen hoe u bestanden en mappen kunt vinden die overeenkomen met gespecificeerde patronen. We zullen ook zien hoe u acties kunt uitvoeren op de bestanden of mappen die het find commando lokaliseert. De handleiding is gebaseerd op Ubuntu, maar is toepasbaar op de meeste Linux distributies en versies

Bestanden en mappen zoeken

Specifieke bestanden zoeken op naam of extensie

Om een specifiek bestand te zoeken, voert u de volgende opdracht uit vanaf de root (/). De opdracht bevat de exacte naam voor het bestand dat u zoekt

find .

naam bestand22.txt

Uitvoer

./test/bestand22.txt
./sales/bestand22.txt

Merk op dat de resultaten het pad bevatten. Dit is belangrijk als u niet weet in welke map het bestand zich bevindt, of als het bestand zich op meer dan één plaats bevindt

U kunt ook naar het bestand in een andere map zoeken terwijl het nog steeds op de huidige locatie staat. In dit geval moet u het pad opgeven voor de map waar u wilt zoeken

find ./test -naam bestand22.txt

Specifieke bestanden zoeken in een andere map

In ons geval zoeken we naar alle bestanden die beginnen met de letters file in de map test

find ./test -naam bestand*

Uitvoer

./test/file22.txt
./test/file30.doc
./test/file1.txt
./test/file5,doc

Zoeken naar bestanden op extensie

Om in Linux een bestand met een bepaalde extensie te vinden, voegt u deze toe aan het commando

find .

naam *.txt

Uitvoer

./test/subtest/subfil.txt
./test/file22.txt
./test/file1.txt
./home1/files32.txt
./home2/file22.txt
./qa/tags.txt

Bestanden en mappen op naam zoeken

Gebruik de onderstaande opdracht om bestanden en mappen te zoeken die beginnen met de letters qa. In onze computer hebben we de bestanden qatree.txt en qa.txt en een map met de naam qa

Als we het commando uitvoeren

find ./ -name "qa*"

uitvoeren
Het geeft de volgende uitvoer

./test/qatree.pdf
./test/qa.txt
./home/qa

De opdracht retourneert zowel de bestanden als de mappen die aan de zoekcriteria voldoen. Als u alleen bestanden of mappen wilt vinden, moet u dit in de opdracht opgeven

Alleen bestanden of mappen zoeken

Gebruik voor alleen bestanden de schakeloptie type f

Alleen bestanden

find ./ -type f -name "qa*"

Uitvoer

./test/qatree.pdf
./test/qa.txt

Alleen mappen

Voeg de optie d toe om alleen mappen te zoeken

find ./ -type d -naam "qa*"

Uitvoer

./home/qa

Hoofdlettergevoelige opdracht find

Alle zoekopdrachten met de schakeloptie -name zijn hoofdlettergevoelig en geven geen resultaten met hoofdletters. Gebruik de optie -iname om alle hoofdletters te krijgen

find ./ -iname "qa*"

Uitvoer

./test/qatree.pdf
./test/qa.txt
./test/QAtest.txt
./home/qa

Een bestand in meerdere mappen zoeken

Om bestanden in verschillende mappen te vinden, voegt u hun paden in het commando toe. In ons geval zoeken we in de mappen Test en Numeric

find ./test ./numeric -name file22.txt -type f

Uitvoer

./test/bestand22.txt

/root/numeriek/bestand22

.txt

Meerdere bestanden met verschillende extensies uit alle mappen vinden

U kunt de opdracht find gebruiken om meerdere bestanden met verschillende extensies te vinden, zoals *.doc, *.txt *.pdf, enz. Dit kan afzonderlijk worden gedaan, één extensie per keer, of met slechts één opdracht die alle gewenste extensies bevat

find .type f ( -naam "*.txt" -o -naam "*.pdf" -o -naam "*.doc" )

uitvoer

./test/subtest/subfil.txt
./test/qatree.pdf
./test/file22.txt
./test/qa.txt
./test/file30.doc
./bookss/acro.pdf
./data1/FILE22.txt
./docs/files32.txt

Zoek bestanden die bepaalde tekst bevatten

Soms wilt u een bestand openen dat bepaalde tekst bevat, maar kunt u zich de bestandsnaam of locatie ervan niet herinneren. Met deze opdracht kunt u alle bestanden vinden die uw doeltekst bevatten

Om alle bestanden te zoeken die het woord hyperconvergence” bevatten, gebruikt u

find / -type f -exec grep -l -i "hyperconvergence" {}

Uitvoer

/root/numeriek/hci

/root/HCIP
De -i optie zorgt ervoor dat het commando hoofdletters negeert en de tekst vindt, ongeacht of het een hoofdletter is of niet, bijv. hyperconvergence, Hyperconvergence , enz

Om de bestanden in een specifieke map te zoeken, voegt u ze gewoon toe aan de opdracht

find ./numeric -type f -exec grep -l -i "hyperconvergence" {}

Uitvoer

./numeric/hci

Bekijk meer grep-opdrachtvoorbeelden

Bestanden en mappen zoeken op basis van grootte

U kunt alle bestanden of mappen vinden die kleiner, gelijk of groter zijn dan een bepaalde grootte, binnen een bepaald bereik of leeg zijn. Gebruik de juiste grootte-indeling afhankelijk van het type bestanden of mappen waarnaar u zoekt

Opties voor de grootte zijn onder andere

c – bytes

k – kilobytes

M – megabytes

G – Gigabytes

Zoek bestanden van een bepaalde grootte – gelijk aan 30MB

Om alle 30MB bestanden te zoeken

zoeken / -grootte 30M

Bestanden groter dan een opgegeven grootte zoeken

find -grootte 2M

Uitvoer

.
/Downloads/ubuntu18043.iso
./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c

Zoek bestanden kleiner dan 10MB in de huidige map

find .

type f -grootte -10M

Zoek bestanden met een grootte tussen 100-200MB

Bij het zoeken naar bestanden binnen een specifiek bereik, zoals tussen 100 en 200 MB

find / -grootte 100M -grootte -200M

Zoeken naar mappen groter dan 20kb

find / -type d -grootte 20k

Lege bestanden en mappen zoeken.

Bestanden

find ./ -type f -grootte 0

of

find ./ -type f -leeg

Directories

find ./ -type d -leeg

Bestanden zoeken op leeftijd of wijzigingstijd

Zoek bestanden ouder dan n dagen

find /path/ -type f -name '*.txt' -mtime 8

De -mtime 8 zoekt naar txt-bestanden die ouder zijn dan 8 dagen

Op wijzigingsdatum

Hiermee worden bestanden gezocht die de afgelopen 17 uur zijn gewijzigd

find . 

mtime -17 -type f 

Zoekt naar mappen die de afgelopen 10 dagen zijn gewijzigd

find . 

mtime -10 -type d 

Zoek bestanden op basis van toegang of wijziging

Zoek bestanden op basis van de datum of tijd waarop ze geopend zijn. Zo kunt u bestanden zien die binnen een bepaalde periode wel of niet zijn geopend

Om bestanden te zien die de afgelopen 10 dagen niet zijn geopend in de homedirectory

find /home -atime 10

Bestanden die precies 10 dagen geleden zijn geopend

find /home -atime 10

Bestanden die in de afgelopen 10 dagen zijn geopend

find /home -atime -10

Zoek bestanden die de laatste n dagen gewijzigd zijn

U kunt ook de bestanden in de map /home zoeken die de afgelopen 10 dagen zijn gewijzigd met de opdracht

find /home -mtime -10 

Zoek bestanden die binnen een bepaalde periode gewijzigd zijn.

Bijvoorbeeld, alle bestanden die tussen 6 en 15 dagen geleden gewijzigd zijn in de home directory

find /home -type f -mtime 6 -mtime -15

Bestanden en mappen die de afgelopen 10 minuten zijn geopend

Gebruik de optie -amin om de bestanden te vinden die de afgelopen 10 minuten zijn geopend

find .

amin -10 -type f

Uitvoer

./.bash_history
./.profileroot@ubuntu1804:~#

Mappen die de afgelopen 10 minutenzijn geopend

find .

amin -10 -type d

Zoek bestanden met specifieke permissies

Syntax

$ find -perm modus

Waarbij modus de toestemming is die ofwel numeriek is zoals 644, 655, 700, 777, enz., of letters zoals u=x, a=r x, enz

U kunt de modus op de volgende drie verschillende manieren opgeven

  1. Zonder voorvoegsel als u bestanden wilt vinden met de exact opgegeven permissies.
  2. Met “-” voor bestanden met ten minste de opgegeven rechten. Dit retourneert bestanden met zowel de opgegeven als extra hogere rechten.
  3. Als u “/” gebruikt, moet u de eigenaar of groep met de rechten op het bestand opgeven.

Zoek bestanden met permissie 777

find -perm 777

Uitvoer

./bestand1

Zoek bestanden met minimaal 766
find -perm -766

Uitvoer

./file2
./file1

De opdracht zoekt alle bestanden waarin de

  • De bestandseigenaar heeft lees-/schrijf-/uitvoerrechten.
  • Groep heeft lees/schrijfrechten
  • Anderen hebben lees/schrijfrechten

Het geeft dus twee bestanden die aan dit criterium voldoen – bestand1 en bestand2. De bestanden hoeven niet de exacte 766 rechten te hebben en kunnen aanvullende rechten hebben, maar moeten ten minste de opgegeven rechten hebben

Bestanden vinden die schrijfbaar zijn door de eigenaar

We zullen nu de “/” gebruiken om bestanden te zoeken die schrijfbaar zijn door hun eigenaar, of groep, of anderen

find -perm /222
.
./file2
./file3
./file1

Het bovenstaande zoekt naar bestanden die beschrijfbaar zijn door hun eigenaar of groep
Dit levert bestanden op die schrijfbaar zijn door één van beide, maar niet noodzakelijk door allebei. Om bestanden te zien die beide schrijfrechten hebben, gebruikt u het voorvoegsel –

find -perm -220

Uitvoer

./file2
./file1

Zoek bestanden die eigendom zijn van een gebruiker

Zoek alle bestanden die eigendom zijn van Jack

zoek /home -gebruiker jack

Uitvoer

/home/jack

/home/jack/examples

.desktop

/home/jack/

.gnupg

/home/jack/

.gnupg/private-keys-v1.d

/home/jack/ans

.cgi

Zoek specifieke bestanden die eigendom zijn van een gebruiker

Zoek alle tekstbestanden die eigendom zijn van Jack

find /home -user jack -iname "*.txt"

Uitvoer

/home/jack/docs/file32.txt

Zoek en vermeld bestanden en mappen met hun rechten

find -name "*.conf"

|

ls -l

Uitvoer

total 120
drwxr-xr-x 2 root root 4096 dec 31 13:19 backup2
drwxr-xr-x 2 root root 4096 jan 4 11:57 Desktop
drwxr-xr-x 2 root root 4096 dec 31 11:50 Documents
drwxr-xr-x 2 root root 4096 dec 31 12:27 Downloads
-rw-r--r-- 1 root 0 jan 4 12:02 file22.doc
drwxr-xr-x 2 root root 4096 jan 4 12:14 bestand23

-rw-r–r–

1 root root 0 jan 4 12:23 bestand23.txt

Zoek en handel naar de resultaten

In dit gedeelte bekijken we hoe u kunt reageren op de bestanden die overeenkomen met het patroon dat is opgegeven in de opdracht find

Bestanden zoeken en machtigingen wijzigen

Zoek en wijzig de machtigingen van bepaalde bestandstypen. In ons geval zullen we werken met PHP-bestanden met verschillende permissies, zoals hieronder weergegeven

jack@ubuntu1804:~/ver$ ls -la

total 8
drwxrwxr-x 2 jack jack 4096 jan 3 14:11 .
drwxr-xr-x 8 jack jack 4096 jan 3 14:05 ..
-rwxr-xr-x 1 jack jack 0 jan 3 14:06 ans.php
-rw-rw-r-- 1 jack jack 0 jan 3 14:11 base.php

-rwxr-xr-x

1 jack 0 jan 3 14:06 query.php

-rw-rw-r–

1 jack 0 jan 3 14:11 qust.php

-rwxr-xr-x

1 jack 0 jan 3 14:06 text.php

-rw-rw–

1 jack 0 jan 3 14:11 vary.php

We zullen nu alle PHP-bestanden (hierboven) zoeken en hun rechten vervangen door 755

find ver -name "*.php" -type f -exec chmod 755 {}

Het commando zoekt naar PHP-bestanden in de map ver en stelt vervolgens hun rechten in op 755(rwxr-xr-x)

Resultaten

jack@ubuntu1804:~/ver$ ls -la
total 8
drwxrwxr-x 2 jack jack 4096 jan 3 14:11 .
drwxr-xr-x 8 jack jack 4096 jan 3 14:05 ..
-rwxr-xr-x 1 jack jack 0 jan 3 14:06 ans.php
-rwxr-xr-x 1 jack jack 0 jan 3 14:11 base.php

-rwxr-xr-x

1 jack 0 jan 3 14:06 query.php

-rwxr-xr-x

1 jack 0 jan 3 14:11 qust.php

-rwxr-xr-x

1 jack 0 jan 3 14:06 text.php

-rwxr-xr-x

1 jack 0 jan 3 14:11 vary.php

Bestands- en mapmachtigingen zoeken en wijzigen

Zoek bestanden met 644 permissies en verander ze in 655 permissies

find .

type f -perm 644 -exec chmod 655 {}

U kunt ook zoeken naar mappen met 644 rechten en deze vervangen door 755

find .

type d -perm 644

Uitvoer

./docs 

De map docs heeft 644 rechten

drwxrwxr-x 2 jack jack 4096 jan 3 12:45 docs

Om het in te stellen op 755, voeren we het volgende uit

find .

type d -perm 644 -exec chmod 755 {}

Nu kunnen we opnieuw controleren om te zien wat precies 755is

find .

type d -perm 755

Uitvoer

./docs

Uit het bovenstaande kunnen we zien dat de mappen root en docs 755 rechten hebben

De opdracht Ls -la geeft de volgende details

drwxr-xr-x 2 jack jack 4096 jan 3 12:45 docs

Bestanden of mappen zoeken en kopiëren

Een specifiek bestand zoeken en naar een map kopiëren

De onderstaande opdracht vindt het bestand file22.txten kopieert het naar de map ~/tmp/images

find -iname file22.txt -exec cp {} ~/tmp/images

Eén type bestand zoeken en naar een map kopiëren

Om bestanden zoals afbeeldingen met de extensie jpg in de huidige map te vinden en ze naar een andere locatie zoals een map afbeeldingen te kopiëren, gebruikt u

find -iname '*.jpg' -exec cp {} ~/tmp/images

Dit zal alle jpg-bestanden vinden en kopiëren naar de map ~/tmp/images

Eén bestand vinden en kopiëren naar meerdere mappen

Eén bestand vinden en kopiëren naar meerdere mappen

find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {}

Dit zal het bestand hci vinden en het naar de drie mappen /tmp/dir1/ /tmp/dir2/ en $HOME/3/kopiëren

Bestanden zoeken en verplaatsen naar een andere map

Om een bekend bestand van een map naar een andere map te verplaatsen. Om het bestand universal.php te verplaatsen

find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/

Zoek en verplaats bestanden met een bepaalde extensie naar een andere map

find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/

Zoek bepaalde bestanden en verplaats ze naar een specifieke andere map

find -type f -name uni*.* -exec mv {} ~/unifiles/

De opdracht zoekt alle bestanden met namen die beginnen met uni en een willekeurige extensie hebben. Vervolgens worden ze verplaatst naar de map /unifiles/

Bestanden zoeken en verplaatsen op basis van leeftijd

Zoek en verplaats bestanden die ouder zijn dan de opgegeven dagen naar een andere locatie, zoals het archief

find /path/ -type f -name '*.pdf' -mtime 20 -exec mv {} /backup1/

Dit zoekt naar pdf-bestanden die ouder zijn dan 20 dagen en verplaatst ze naar de backup1 directory

Bestanden en mappen zoeken en verwijderen

De syntaxis voor het zoeken en verwijderen van bestanden of mappen in de huidige map is

find .type f -naam "te verwijderen bestand" -exec rm -f {} ; om alleen bestanden te verwijderen of

find .type d -name "dir-to-delete" -exec rm -rf {}; om alleen mappen te verwijderen

Alleen specifieke bestanden zoeken en verwijderen

Om bestanden te vinden en te verwijderen die beginnen met til, gebruikt u

find . 

type f -name "til*" -exec rm {} 

Om mappen beginnend met til te vinden en te verwijderen

find .

type d -name "til*" -exec rm {}

Zowel bestanden als mappen verwijderen

find . 

name "til*" -exec rm -rf {} 

Dit verwijdert zowel bestanden als mappen die beginnen met de letters til

Verwijderen op extensie

Hieronder ziet u hoe u alle txt-bestanden in de huidige map kunt vinden en verwijderen. Vervang de txt door een andere extensie zoals bak, pdf of een andere die u wilt verwijderen

find .

type f -name "*.txt" -exec rm -f {}

Als u wilt dat het systeem u vraagt om bevestiging voordat u elk bestand verwijdert, voegt u de optie -i toe zoals hieronder

find .

-type

f -name "*.txt" -exec rm -i {}

Uitvoer

rm: regelmatig leeg bestand './File22.txt' verwijderen? y

rm

: regelmatig leeg bestand './file22.txt' verwijderen? y

rm

: regelmatig leeg bestand './file23.txt' verwijderen?

Standaard zal de -rm de mappen niet verwijderen en moet u de -r optie gebruiken om een recursieve verwijdering te verzekeren. Dit zorgt ervoor dat lege mappen en mappen die bestanden bevatten verwijderd worden. De optie -f forceert de verwijdering en wordt gebruikt voor zowel bestanden als mappen

Bestanden ouder dan n dagen zoeken en verwijderen

Back-upbestanden ouder dan 20 dagen in de huidige map zoeken en verwijderen

find .

type f -name '*.bak' -mtime 20 -exec rm {}

Dit verwijdert alle .bak-bestanden die ouder zijn dan 20 dagen

Alleen mappen zoeken en verwijderen

Om een directory met de naam dir22te verwijderen

find .

type d -name dir22 -exec rm -rf {}

Zorg ervoor dat u de hoofdletters van de mapnaam gebruikt of gebruik de optie -iname

find .

type d -iname dir22 -exec rm -rf {}

Verwijdert zowel Dir22 als dir22

Gebruik de optie -i om het verwijderen te bevestigen

find .

type d -iname Dir22 -exec rm -rf -i {}

Uitvoer
rm: directory ‘./Dir22’ verwijderen? n
rm: verwijder directory ‘./dir22’? y

In ons geval typten we n voor de directory Dir22 die niet verwijderd zal worden en y voor de dir22 die nu verwijderd zal worden

Lege bestanden zoeken en verwijderen

U kunt een van de volgende opdrachten gebruiken om lege bestanden te vinden en automatisch te verwijderen

find ./ -type f -size 0 -exec rm -f {}

of
find ./ -type f -size 0 | xargs rm -f
of
find ./ -type f -size 0 -delete

Lege mappen vinden en verwijderen

Om lege mappen te verwijderen gebruiken we de optie d

find ./ -type d -empty -exec rmdir {}

Een ander alternatief is om delete te gebruiken in plaats van remove

find ./ -type d -empty -delete

Houd er rekening mee dat het verwijderen van systeem- of kritieke bestanden van uw computer het besturingssysteem of toepassingen kan beschadigen of kan leiden tot verlies van uw belangrijke gegevens

Om te voorkomen dat bestanden per ongeluk verwijderd worden, kunt u het beste een gebruikersaccount gebruiken dat geen root is. Zorg er ook voor dat u de juiste bestanden verwijdert die niet nuttig zijn en dat u een back-up hebt van al uw gegevensbestanden, voor het geval dat

Wat is het volgende?

Probeer de bovenstaande Linux find-commando’s eens uit in uw lab- of NIET-PRODUKTIE-omgeving. Kijk of u sommige kunt gebruiken om het opschonen van het bestandssysteem te automatiseren met Crontab. En om Linux onder de knie te krijgen, kunt u deze online cursus volgen.

  • Amos Kingatua
    Auteur
Met dank aan onze sponsors
Meer lezingen over Linux
Energie voor uw bedrijf
Enkele van de tools en services om je bedrijf te helpen groeien.
  • Invicti maakt gebruik van Proof-Based Scanning™ om de geïdentificeerde kwetsbaarheden automatisch te verifiëren en binnen enkele uren bruikbare resultaten te genereren.
    Probeer Invicti
  • Web scraping, residentiële proxy, proxy manager, web unlocker, zoekmachine crawler en alles wat je nodig hebt om webgegevens te verzamelen.
    Probeer Brightdata
  • Monday.com is een alles-in-één werk OS om je te helpen bij het beheren van projecten, taken, werk, verkoop, CRM, operaties, workflows en meer.
    Probeer maandag
  • Intruder is een online kwetsbaarhedenscanner die zwakke plekken in de cyberbeveiliging van uw infrastructuur vindt om kostbare datalekken te voorkomen.
    Probeer indringer