Commando zoeken in Linux (bestanden en mappen zoeken)
het commando find
is een van de krachtigste tools in het arsenaal van Linux systeembeheerders. Het zoekt naar bestanden en mappen in een mappenhiërarchie op basis van een door de gebruiker gegeven expressie en kan door de gebruiker gespecificeerde actie uitvoeren op elk bestand dat overeenkomt.
u kunt de opdracht find
gebruiken om bestanden en mappen te zoeken op basis van hun rechten, type, datum, eigendom, grootte en meer., Het kan ook worden gecombineerd met andere tools zoals grep
of sed
.
find Command syntaxis #
de algemene syntaxis voor het find
de opdracht is als volgt:
- het
options
attribuut bepaalt de behandeling van de symbolische links, foutopsporingsopties en optimalisatiemethode. - het
path...
attribuut definieert de startmap of mappen waar find de bestanden zal doorzoeken., - het
expression
attribuut bestaat uit opties, zoekpatronen en acties gescheiden door operators.
om naar bestanden in een map te zoeken, moet de gebruiker die de opdracht find
aanroept, leesrechten op die map hebben.
laten we eens kijken naar het volgende voorbeeld:
bestanden zoeken op naam #
bestanden zoeken op naam is waarschijnlijk het meest voorkomende gebruik van het find
Commando., Om een bestand met zijn naam te vinden, gebruik je de optie -name
gevolgd door de naam van het bestand waarnaar je zoekt.
bijvoorbeeld, om te zoeken naar een bestand met de naam document.pdf
in de /home/linuxize
directory, gebruikt u het volgende commando:
Voor het uitvoeren van een case-insensitive zoeken verander de -name
optie -iname
:
Het bovenstaande commando zal overeenkomen met “Document.pdf”, ” DOCUMENT.pdf” ..etc.,
bestanden zoeken op Extensie #
bestanden zoeken op extensie is hetzelfde als bestanden zoeken op naam. Om bijvoorbeeld alle bestanden te vinden die eindigen op .log.gz
in de /var/log/nginx
map, typt u:
Het is belangrijk om te vermelden dat u het patroon moet citeren of het sterretje moet verlaten *
symbool met Backslash \
zodat het niet wordt geïnterpreteerd door de shell wanneer u het jokerteken gebruikt.,
om alle bestanden te vinden die niet overeenkomen met de regex *.log.gz
kunt u de optie -not
gebruiken. Om bijvoorbeeld alle bestanden te vinden die niet eindigen op *.log.gz
gebruikt u:
bestanden zoeken op Type #
soms moet u zoeken naar specifieke bestandstypen zoals gewone bestanden, mappen of symlinks. In Linux is alles een bestand.,div>: named pipe (FIFO)
s
: socketbijvoorbeeld, om alle mappen in de huidige map , gebruikt u:
Het gemeenschappelijk voorbeeld zou zijn om recursief wijzigen van het website-bestand machtigingen voor 644
en de map machtigingen voor 755
gebruik de chmod
commando:
het Vinden van Bestanden op Grootte #
om Te zoeken naar bestanden op basis van de grootte van het bestand, het doorgeven van de -size
parameter samen met de grootte criteria.,9fdb538a6b”>: 512-byte blokken (standaard)
c
: bytesw
: twee-byte woordenk
: KbM
: MegabytesG
: GigabyteHet volgende commando zal alle bestanden van exact 1024
bytes binnen de /tmp
map:
De find
commando kunt u ook zoeken naar bestanden die groter of kleiner zijn dan de opgegeven grootte.,
in het volgende voorbeeld zoeken we naar alle bestanden kleiner dan 1MB
in de huidige werkmap. Let op het min -
symbool voor de grootte waarde:
Als u wilt zoeken naar bestanden met een grootte groter dan 1MB
, dan moet u de plus +
symbool:
u kunt zelfs zoeken naar bestanden binnen een groottebereik., Het volgende commando zal alle bestanden vinden tussen 1
en 2MB
:
bestanden zoeken op wijzigingsdatum #
de find
commando kan ook zoeken naar bestanden op basis van hun laatste wijziging, toegang of verander de tijd.
hetzelfde als bij het zoeken op Grootte, gebruik de plus en min symbolen voor ” groter dan “of”kleiner dan”.
stel dat je een paar dagen geleden een van de Dovecot configuratiebestanden hebt gewijzigd, maar je bent vergeten welke., U kunt eenvoudig alle bestanden filteren onder de /etc/dovecot/conf.d
map die eindigt met .conf
en is gewijzigd in de afgelopen vijf dagen:
Hier is een ander voorbeeld van het filteren van bestanden op basis van de wijzigingsdatum met behulp van de -daystart
optie., Het commando hieronder toont alle bestanden in de /home
map die gewijzigd zijn 30
of meer dagen geleden:
bestanden zoeken met permissies #
de -perm
optie staat u toe om zoeken naar bestanden op basis van de bestandsmachtigingen.,
bijvoorbeeld, om alle bestanden te vinden met rechten van precies 775
in de /var/www/html
map, zou u gebruik maken van:
u kunt de numerieke modus met min -
of slash /
.
wanneer slash /
als prefix wordt gebruikt, moet ten minste één categorie (gebruiker, groep of andere) minstens de respectievelijke bits hebben om een bestand te laten overeenkomen.,
beschouw het volgende voorbeeldcommando:
het bovenstaande commando zal alle bestanden met leesmachtigingen overeenkomen die ingesteld zijn voor gebruiker, groep of anderen.
Als min -
wordt gebruikt als prefix, dan moeten ten minste de opgegeven bits worden ingesteld om het bestand te laten overeenkomen., Het volgende commando zal zoeken naar bestanden met lees-en schrijfrechten voor de eigenaar en de groep en die leesbaar zijn voor andere gebruikers:
bestanden zoeken naar eigenaar #
om bestanden te vinden die eigendom zijn van een bepaalde gebruiker of groep, gebruik je de opties -user
en -group
.
bijvoorbeeld, om te zoeken naar alle bestanden en mappen die eigendom zijn van de gebruiker linuxize
, zou u het volgende commando uitvoeren:
Hier is een voorbeeld uit de echte wereld., Stel dat u alle bestanden wilt vinden die eigendom zijn van de gebruiker www-data
en de eigendom van de overeenkomende bestanden wilt wijzigen van www-data
naar nginx
:
bestanden zoeken en verwijderen #
om te verwijderen alle overeenkomende bestanden, voeg de -delete
optie toe aan het einde van de overeenkomende expressie.
zorg ervoor dat u deze optie alleen gebruikt als u er zeker van bent 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 -delete
optie gebruikt.
bijvoorbeeld, om alle bestanden die eindigen op .temp
uit de /var/log/
te verwijderen, zou u gebruik maken van:
-delete
optie met uiterste voorzichtigheid. De opdracht find
wordt geëvalueerd als een expressie en als u de optie -delete
toevoegt, zal het commando eerst alles onder de opgegeven beginpunten verwijderen.,als het gaat om mappen, kan find
alleen lege mappen verwijderen, hetzelfde als rmdir
.
conclusie #
we hebben u laten zien hoe u hetfind
commando gebruikt met verschillende opties en criteria.
Dit artikel zou je een fundamenteel begrip moeten geven van hoe je bestanden op je Linux systemen kunt lokaliseren. U kunt ook de manual pagina van find
bezoeken en lezen over alle andere krachtige opties van het find
Commando.