Het Linux find
commando is een krachtig hulpmiddel waarmee systeembeheerders bestanden en mappen kunnen lokaliseren en beheren op basis van een breed scala aan zoekcriteria. Het kan directory ‘ s en bestanden vinden op hun naam, hun type of extensie, grootte, machtigingen, enz.
naast het lokaliseren van bestanden en mappen, maakt het combineren van het find
commando met anderen het mogelijk om actie te ondernemen op de resultaten., Het toevoegen van de optie -exec
stelt systeembeheerders in staat om externe commando ‘ s uit te voeren en acties uit te voeren zoals kopiëren, verplaatsen, verwijderen of wijzigen van rechten van bestanden die voldoen aan de opgegeven criteria zoals grootte, Naam, enz.
in dit artikel zullen we beginnen met het uitleggen van de Basic Linux find commando ‘ s met voorbeelden. Dit laat je zien hoe je bestanden en mappen kunt vinden. We zullen u dan laten zien hoe u de optie -exec
gebruikt om op de bestanden of mappen te reageren op basis van hun grootte, rechten, enz.,
de algemene syntaxis voor het find commando is
find {path} {name -of-file or dir-to-search} {action-to-take}
waar,
in deze tutorial zullen we uitleggen hoe bestanden en mappen gevonden kunnen worden die overeenkomen met opgegeven patronen. We zullen ook zien hoe acties uit te voeren op de bestanden of mappen die het find Commando lokaliseert. De Gids is gebaseerd op Ubuntu, maar is van toepassing op de meeste Linux distributies en versies.
bestanden en mappen zoeken
specifieke bestanden zoeken op naam of extensie
om naar een specifiek bestand te zoeken, voer je het volgende commando uit vanaf de root (/)., Het commando bevat de exacte naam van het bestand dat u zoekt.
find . -name file22.txt
Output
./test/file22.txt./sales/file22.txt
merk op dat de resultaten het pad bevatten. Dit is belangrijk als je niet weet in welke directory het bestand zich bevindt, of wanneer het zich op meer dan één plaats bevindt.
u kunt ook zoeken naar het bestand in een andere map terwijl u zich nog op de huidige locatie bevindt. In dit geval moet u het pad opgeven voor de map waar u wilt zoeken.,
find ./test -name file22.txt
zoeken naar specifieke bestanden in een andere map
In ons geval zullen we zoeken naar alle bestanden die beginnen met het letterbestand in de testmap.
find ./test -name file*
Output
./test/file22.txt./test/file30.doc./test/file1.txt./test/file5,doc
zoeken naar bestanden met extensie
om een bestand in Linux met een bepaalde extensie te vinden, voeg het toe aan het commando.,
find . -name *.txt
uitvoer
./test/subtest/subfil.txt./test/file22.txt./test/file1.txt./home1/files32.txt./home2/file22.txt./qa/tags.txt
bestanden en mappen zoeken op naam
gebruik het onderstaande commando om te zoeken naar bestanden en mappen die beginnen met de letters qa
. In onze computer hebben we de qatree.txt
en qa.txt
bestanden en een map met de naam qa
.,
als we het commando uitvoeren;
find ./ -name "qa*"
geeft het de volgende uitvoer
./test/qatree.pdf./test/qa.txt./home/qa
het commando geeft zowel de bestanden als mappen die overeenkomen met de zoekcriteria. Om alleen bestanden of mappen te vinden, moet je dit opgeven in het commando.
zoek alleen bestanden of mappen
gebruik alleen de schakelaar type f
voor bestanden.
bestanden alleen
find ./ -type f -name "qa*"
uitvoer
./test/qatree.pdf./test/qa.txt
mappen alleen
voeg de type d
optie toe om alleen mappen te vinden.,
find ./ -type d -name "qa*"
uitvoer
./home/qa
Hoofdletterongevoelige zoekopdracht
alle zoekopdrachten met -name
switch zijn hoofdlettergevoelig en geven geen resultaten met hoofdletters. Om alle gevallen te krijgen, gebruik je de -iname
optie.
find ./ -iname "qa*"
uitvoer
./test/qatree.pdf./test/qa.txt./test/QAtest.txt./home/qa
zoeken naar een bestand uit meerdere mappen
om de bestanden in verschillende mappen te vinden, voegt u hun paden toe in het commando., In ons geval zullen we de test
en numeric
mappen controleren.
find ./test ./numeric -name file22.txt -type f
Output
./test/file22.txt/root/numeric/file22.txt
meerdere bestanden zoeken met verschillende extensies uit alle mappen
u kunt het commando zoeken gebruiken om meerdere bestanden te vinden die de verschillende extensies delen, zoals *.doc
, *.txt
*.pdf
, enz. Dit kan afzonderlijk worden gedaan, één extensie per keer, of met slechts één commando dat alle gewenste extensies bevat.,
find . -type f ( -name "*.txt" -o -name "*.pdf" -o -name "*.doc" )
uitvoer
zoek bestanden die bepaalde tekst bevatten
soms wilt u een bestand openen dat bepaalde tekst bevat, maar kunt u de bestandsnaam of locatie niet herinneren. Met dit commando kunt u alle bestanden vinden die uw doeltekst bevatten.
om te zoeken naar alle bestanden die het woord hyperconvergence bevatten, gebruik;
find / -type f -exec grep -l -i "hyperconvergence" {} ;
uitvoer
/root/numeric/hci/root/HCIP
De optie –i schakelt het commando in om gevallen te negeren en zal de tekst vinden, al dan niet met hoofdletters , zoals hyperconvergence, Hyperconvergence, enz.,
om naar de bestanden in een specifieke map te zoeken, voeg het gewoon toe aan het commando
find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;
uitvoer
./numeric/hci
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 het juiste formaat, afhankelijk van het type bestanden of mappen waarnaar u op zoek bent.,nd-bestanden van een bepaalde grootte – gelijk aan 30 MB
om Te Zoeken, vinden alle 30MB bestanden
find / -size 30M
het Vinden van bestanden die groter zijn dan een bepaalde grootte
find -size +2M
Output:
. /Downloads/ubuntu18043.iso ./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c
Vind bestanden kleiner dan 10 mb in de huidige directory
find . -type f -size -10M
bestanden Zoeken met maten tussen de 100-200 MB
Bij het zoeken naar bestanden binnen een bepaald bereik, zoals tussen de 100 en 200 MB
find / -size +100M -size -200M
voor directories groter dan 20kb
find / -type d -size +20k
Het vinden van lege bestanden en mappen.,
Bestanden
find ./ -type f -size 0
of
find ./ -type f –empty
Directories
find ./ -type d –empty
bestanden Zoeken op basis van leeftijd of wijziging tijd
het Vinden van bestanden die ouder zijn dan n dagen
find /path/ -type f -name '*.txt' -mtime +8
De -mtime +8
zoeken txt
bestanden die ouder zijn dan 8 dagen.,
op wijzigingsdatum
Dit zal zoeken naar bestanden die zijn gewijzigd in de laatste 17 uur
find . -mtime -17 -type f
zoekt naar mappen die zijn gewijzigd in de laatste 10 dagen
find . -mtime -10 -type d
bestanden zoeken op basis van toegang of wijziging
bestanden zoeken op basis van datum of tijd waartoe toegang is verkregen. Hiermee kunt u bestanden zien die wel of niet binnen een bepaalde periode zijn geopend.
om bestanden te zien die in de laatste 10 dagen niet zijn benaderd in de persoonlijke map.,
find /home -atime +10
bestanden exact 10 dagen geleden geopend
find /home -atime 10
geopend in de laatste 10 dagen
find /home -atime -10
zoek bestanden gewijzigd in de laatste n dagen
u kunt ook zoeken naar de bestanden in de /home
map gewijzigd in de laatste 10 dagen met behulp van het commando;
find /home -mtime -10
zoek bestanden gewijzigd binnen een specifieke periode.
bijvoorbeeld, alle bestanden gewijzigd tussen 6 en 15 dagen geleden in de home directory.,
find /home -type f -mtime +6 -mtime -15
bestanden en mappen die in de laatste 10 minuten zijn geopend
om de bestanden te vinden die in de laatste 10 minuten zijn geopend, gebruikt u de optie-amin.
find . -amin -10 -type f
Output:
./.bash_history./.profileroot@ubuntu1804:~#
Mappen toegankelijk is binnen de laatste 10 minuten
find . -amin -10 -type d
Zoeken naar bestanden die overeenkomen met specifieke machtigingen
Syntax
$ find -perm mode
Waar modus is de toestemming die is numeriek zoals 644, 655, 700, 777
, enz., of letters, zoals u=x, a=r+x,
etc.,
u kunt de modus op de volgende drie manieren opgeven.
- zonder voorvoegsel wanneer u bestanden wilt vinden met de exacte opgegeven rechten.
- met “
-
” voor bestanden met ten minste de opgegeven rechten. Dit retourneert bestanden met de opgegeven en extra hogere machtigingen. - het gebruik van”
/
” vereist het specificeren van de eigenaar of groep met de toestemming voor het bestand.,
bestanden zoeken met toestemming 777
find -perm 777
uitvoer
./file1
bestanden zoeken met ten minste766
find-perm -766
uitvoer
./file2./file1
het commando zoekt naar alle bestanden waarin de
- de eigenaar van het bestand de rechten voor lezen/schrijven/uitvoeren heeft.
- groep heeft lees / schrijf rechten
- anderen hebben lees / schrijf rechten
als zodanig geeft het twee bestanden terug die aan dit criterium voldoen – file1 en file2., De bestanden hoeven niet de exacte 766
rechten te hebben en kunnen zo lang extra rechten hebben, maar moeten minstens de opgegeven rechten hebben.
zoek bestanden die beschrijfbaar zijn voor de eigenaar
We zullen nu de “/
” gebruiken om te zoeken naar bestanden die beschrijfbaar zijn voor de eigenaar, de groep of anderen.
find -perm /222../file2./file3./file1
het bovenstaande zoekt naar bestanden die beschrijfbaar zijn voor de eigenaar of de groep.
Dit geeft bestanden terug die beschrijfbaar zijn voor een van beide, maar niet noodzakelijk voor beide. Om bestanden te zien, waar beide beschrijfbare rechten hebben, gebruik je het-prefix.,
./file2./file1
Vind bestanden die eigendom zijn van een gebruiker
het Vinden van alle bestanden die eigendom zijn van Jack
find /home -user jack
Output:
/home/jack/home/jack/examples.desktop/home/jack/.gnupg/home/jack/.gnupg/private-keys-v1.d/home/jack/ans.cgi
het Vinden van specifieke bestanden, eigendom van een gebruiker
Vindt u alle tekst bestanden die eigendom zijn van Jack
find /home -user jack -iname "*.txt"
Output:
/home/jack/docs/file32.txt
Zoeken en een lijst van bestanden en mappen samen met hun permissies
find -name "*.conf" | ls -l
Output:
Zoeken en reageren op de resultaten
In deze sectie, we kijken hoe u kunt handelen op de bestanden die overeenkomen met het patroon dat is opgegeven in de opdracht.,
bestanden zoeken en machtigingen wijzigen
machtigingen van bepaalde bestandstypen zoeken en wijzigen. In ons geval zullen we werken met PHP-bestanden met verschillende machtigingen zoals hieronder weergegeven.,
We zullen nu kijken voor alle PHP bestanden (boven) en het vervangen van hun machtigingen met 755
find ver -name "*.php" -type f -exec chmod 755 {} ;
Het commando ziet er voor de PHP-bestanden in de ver
map en vervolgens stelt hun toestemming tot 755
(rwxr-xr-x
)
Resultaten
Zoeken en wijzigen van bestanden en directory permissies
het Vinden van bestanden met 644 rechten en veranderen ze 655 machtigingen
find . -type f -perm 644 -exec chmod 655 {} ;
Je kunt ook kijken voor mappen met 644 rechten en vervang dit met 755.,
find . -type d -perm 644
Output:
./docs
De map docs heeft 644 machtigingen
drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs
Om het 755
, wij uitvoeren
find . -type d -perm 644 -exec chmod 755 {} ;
Nu we te controleren, om te zien wat er precies 755
find . -type d -perm 755
Output:
.
./docs
van bovenaf kunnen we zien dat de root en docs directory ‘ s de 755 rechten hebben.,
Ls –la
commando 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 kopiëren naar een map
het onderstaande commando zal het file22.tx
t bestand vinden en kopiëren naar de ~/tmp/images
map.,
find -iname file22.txt -exec cp {} ~/tmp/images ;
Zoek en kopieer een bestandstype naar een map
om bestanden te vinden zoals afbeeldingen met jpg
extensie in de huidige map en kopieer ze naar een andere locatie zoals een map met afbeeldingen, Gebruik;
find -iname '*.jpg' -exec cp {} ~/tmp/images ;
Dit zal alle bestanden vinden en kopiëren jpg-bestanden naar de ~/tmp/images
map.
zoeken en kopiëren van een bestand naar vele mappen
zoeken en kopiëren van een enkel bestand naar meerdere mappen.,
find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;
Dit zal het bestand HCI-bestand vinden en kopiëren naar de drie mappen van /tmp/dir1/ /tmp/dir2/
en $HOME/3/
Zoek en verplaats bestanden naar een andere map
om een bekend bestand van een map naar een andere te verplaatsen., Het verplaatsen van de universal.php
bestand;
find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;
bestanden met een bepaalde extensie zoeken en verplaatsen naar een andere map
find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;
bepaalde bestanden zoeken en verplaatsen naar een specifieke andere map
find -type f -name uni*.* -exec mv {} ~/unifiles/ ;
het commando zoekt naar alle bestanden met namen die beginnen met uni
en een extensie hebben. Het verplaatst ze vervolgens naar de map /unifiles/
zoeken en verplaatsen van bestanden op basis van leeftijd
zoeken en verplaatsen van bestanden ouder dan 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 ouder dan 20 dagen en verplaatst ze naar de backup1-map.,bestanden en mappen
De syntax voor het vinden en verwijderen van bestanden of mappen in de huidige map
find . -type f -name "file to delete" -exec rm -f {} ;
om bestanden te verwijderen of
find . -type d -name "dir-to-delete" -exec rm -rf {} ;
om te verwijderen mappen alleen
het Vinden en verwijderen van bepaalde bestanden
Voor het vinden en verwijderen van bestanden beginnen met til, gebruik;
find . -type f -name "til*" -exec rm {} ;
Voor het vinden en verwijderen van mappen die beginnen met til
find . -type d -name "til*" -exec rm {} ;
Verwijderen van bestanden en directories
find . -name "til*" -exec rm -rf {} ;
Dit zal het verwijderen van bestanden en mappen die beginnen met de letters til.,
Delete by extension
hieronder staat hoe u alle txt
bestanden in de huidige map kunt vinden en verwijderen. Vervang detxt
met een andere extensie zoalsbak
,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 te bevestigen voordat u elk bestand verwijdert, voeg dan de-i optie toe zoals hieronder.,
find . -type f -name "*.txt" -exec rm -i {} ;
uitvoer
standaard zal de -rm
de mappen niet verwijderen en MOET u de optie –r
gebruiken om een recursieve verwijdering te garanderen. Dit zorgt voor het verwijderen van lege mappen en die met bestanden. De optie -f
forceert de verwijdering en wordt gebruikt voor zowel de bestanden als de mappen.
bestanden ouder dan n dagen zoeken en verwijderen
back-upbestanden ouder dan 20 dagen uit de huidige map zoeken en verwijderen.,
find . -type f -name '*.bak' -mtime +20 -exec rm {} ;
Dit zal alle .bak
bestanden ouder dan 20 dagen verwijderen.
zoek en verwijder alleen mappen
om een map genaamd dir22
find . -type d -name dir22 -exec rm -rf {} ;
te verwijderen zorg ervoor dat u overeenkomt met de naam van de map of gebruik de optie -iname
.
find . -type d -iname Dir22 -exec rm -rf {} ;
verwijdert zowelDir22
endir22
om te bevestigen voor verwijdering, gebruik de-i optie.
find . -type d -iname Dir22 -exec rm -rf -i {} ;
uitvoer
rm: map verwijderen ‘.Dir22’?, n
rm: map verwijderen’.dir22′? y
in ons geval hebben we n
Voor map Dir22
die niet zal worden verwijderd en y
voor de dir22
die nu zal worden verwijderd.
lege bestanden zoeken en verwijderen
u kunt elk van de volgende opdrachten gebruiken om lege bestanden te vinden en automatisch te verwijderen.
find ./ -type f -size 0 -exec rm -f {} ;
of
zoeken ./ – type f-size 0 / xargs rm-f
of
find .,/- type f –size 0-delete
lege mappen zoeken en verwijderen
om lege mappen te verwijderen gebruiken we de optie d
.
find ./ -type d -empty -exec rmdir {} ;
een ander alternatief is verwijderen in plaats van verwijderen.
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 onbedoelde verwijderingen te voorkomen, is het het beste om een niet-root gebruikersaccount te gebruiken., 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 volgt?
ga je gang en probeer de bovenstaande Linux find commando ‘ s in je lab of niet productie omgeving. Kijk of je wat kunt gebruiken om het opschonen van het bestandssysteem te automatiseren met Crontab. En, om Linux onder de knie te krijgen, bekijk deze online cursus.