Skip to main content

Gebruik maken van de Linux en Unix Command vind

Linux Tutorial for Beginners: Introduction to Linux Operating System (Juni- 2026)

Linux Tutorial for Beginners: Introduction to Linux Operating System (Juni- 2026)
Anonim

De opdracht Linux en Unix vind voert een zoekopdracht uit naar bestanden in een mappenhiërarchie.

Syntaxis voor vind commando:

zoek pad … expressie

Omschrijving

Deze handleidingpagina documenteert de GNU-versie van vind . Het bevel vind doorzoekt de mapstructuur geroot bij elke gegeven bestandsnaam door de gegeven uitdrukking van links naar rechts te evalueren, volgens de voorrangsregels (zie sectie over Operators hieronder), totdat de uitkomst bekend is; met andere woorden, de linkerkant is onjuist en operaties, waar voor of , op welk moment vind gaat naar de volgende bestandsnaam.

Het eerste argument dat begint met:

  • -
  • ( of),
  • !

wordt beschouwd als het begin van de uitdrukking; eventuele argumenten voordat het paden zijn om te zoeken, en eventuele argumenten hierna zijn de rest van de uitdrukking. Als er geen paden worden gegeven, wordt de huidige map gebruikt. Als er geen uitdrukking wordt gegeven, de uitdrukking -afdrukken is gebruikt.

De vind opdracht wordt afgesloten met status 0 als alle bestanden met succes zijn verwerkt, groter dan 0 als er fouten optreden.

Uitdrukkingen

De uitdrukking bestaat uit opties (die van invloed zijn op de algehele werking in plaats van de verwerking van een specifiek bestand en altijd true retourneren), tests (die een echte of valse waarde retourneren) en acties (die bijwerkingen hebben en een waar teruggeven of retourneren). valse waarde), allemaal gescheiden door operators. De uitdrukking -en wordt aangenomen wanneer de operator wordt weggelaten. Als de expressie geen andere acties bevat dan -snoeien , dan -afdrukken wordt uitgevoerd op alle bestanden waarvoor de expressie waar is.

opties

Alle opties keren altijd waar terug. Ze worden altijd van kracht in plaats van alleen te worden verwerkt wanneer hun plaats in de uitdrukking wordt bereikt. Daarom is het voor de duidelijkheid het beste om ze aan het begin van de uitdrukking te plaatsen.

-daystart Meet tijden (voor -amin, -atime, -cmin, -ctime, -min, en -mtime ) vanaf het begin van vandaag in plaats van 24 uur geleden.
-diepte Verwerk de inhoud van elke map voor de map zelf.
-volgen Dereference symbolic links. Impliceert -noleaf .
-helpen of --helpen Druk een samenvatting af van het gebruik van de opdrachtregel van vind en verlaat.
-maximale diepte aantal Daal af op het meeste aantal niveaus (een niet-negatief geheel getal) van mappen onder de argumenten op de opdrachtregel. De uitdrukking -maxdepth 0 betekent alleen de tests en acties toepassen op de opdrachtregelargumenten.
-mindepth nummer Pas geen tests of acties toe op niveaus die kleiner zijn dan het aantal (een niet-negatief geheel getal). De uitdrukking -mindepth 1 betekent alle bestanden verwerken, behalve de argumenten op de opdrachtregel.
-mount Daal geen mappen af ​​op andere bestandssystemen. Een alternatieve naam voor -xdev , voor compatibiliteit met sommige andere versies van vind .
-noleaf Optimaliseer niet door te veronderstellen dat mappen 2 minder submappen bevatten dan hun aantal harde links. *
-versie of --versie Print de vind versienummer en exit.
-xdev Daal geen mappen af ​​op andere bestandssystemen.

* Deze optie is nodig bij het zoeken naar bestandssystemen die de Unix-directory-koppelingsconventie niet volgen, zoals CD-ROM- of MS-DOS-bestandssystemen of AFS-volume-aankoppelpunten. Elke map op een normaal Unix-bestandssysteem heeft minstens 2 harde links: de naam en de bijbehorende. (periode) invoer. Bovendien hebben zijn submappen (indien aanwezig) elk. ingang gekoppeld aan die map.

Wanneer vind bestudeert een map, nadat deze twee minder subdirectories gerangschikt heeft dan de koppelingsteller van de directory, weet deze dat de rest van de vermeldingen in de map niet-mappen zijn ( blad bestanden in de mappenboom). Als alleen de namen van de bestanden moeten worden onderzocht, is het niet nodig ze te vermelden; dit geeft een aanzienlijke toename van de zoeksnelheid.

Tests

Numerieke argumenten kunnen worden opgegeven als:

+ n Voor groter dan n.
-n Voor minder dan n.
n Voor precies n.
-amin n Bestand is voor het laatst geopend n minuten geleden.
-anewer bestand Bestand is voor het laatst recentelijk geopend dan het dossier is gewijzigd. -anewer wordt beïnvloed door -volgend alleen als -volgend voor-komt-op de opdrachtregel.
-tijd n Bestand is voor het laatst geopend n * 24 uur geleden.
-cmin n De status van het bestand is voor het laatst gewijzigd n minuten geleden.
-cnewer bestand De status van het bestand is voor het laatst recentelijk gewijzigd dan het bestand is gewijzigd.- cnewer wordt beïnvloed door -volgen alleen als -volgen komt eerder -cnewer op de opdrachtregel.
-ctime n De status van het bestand is voor het laatst gewijzigd n * 24 uur geleden.
-leeg Bestand is leeg en is een normaal bestand of een map.
, vals Altijd fout.
-type type Bestand staat op een bestandssysteem van het opgegeven type. De geldige bestandssysteemtypen variëren tussen verschillende versies van Unix; een onvolledige lijst van bestandssysteemtypen die worden geaccepteerd op een of andere versie van Unix is: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. U kunt -printf met de% F-richtlijn gebruiken om de typen van uw bestandssystemen te bekijken.
- gid n De numerieke groeps-ID van het bestand is n .
-groep gname Bestand hoort bij groep gname (numerieke groeps-ID toegestaan).
-naam patroon Zoals -lnaam, maar de overeenkomst is niet hoofdlettergevoelig.
-iname patroon Net zoals -naam , maar de overeenkomst is niet hoofdlettergevoelig. Bijvoorbeeld de patronen fo * en F ?? overeenkomen met de bestandsnamen Foo , FOO , foo , FOO , enz.
-inum n Bestand heeft inodenummer n .
-ipath patroon Net zoals -pad , maar de overeenkomst is niet hoofdlettergevoelig.
-iregex patroon Like -regex, maar de overeenkomst is niet hoofdlettergevoelig.
-links n Bestand heeft n koppelingen.
-lname patroon Bestand is een symbolische link waarvan de inhoud overeenkomt met het schaalpatroon. De metacharacters behandelen niet / of . speciaal.
- min. n Bestandsgegevens zijn voor het laatst gewijzigd n minuten geleden.
-mtime n Bestandsgegevens zijn voor het laatst gewijzigd n * 24 uur geleden.
-naam patroon De basis van de bestandsnaam (het pad met de leidende mappen verwijderd) komt overeen met het schaalpatroon. De metatekens (*, ?, en ) komen niet overeen met a . aan het begin van de basisnaam. Om een ​​map en de onderliggende bestanden te negeren, gebruikt u -snoeien ; zie een voorbeeld in de beschrijving van -pad .
-nieuwer bestand Bestand is recenter gewijzigd dan het dossier . De uitdrukking -newer wordt beïnvloed door -volgen alleen als -volgen komt eerder -newer op de opdrachtregel.
-nouser Geen enkele gebruiker komt overeen met de numerieke gebruikers-ID van het bestand.
-nogroup Geen enkele groep komt overeen met de numerieke groeps-ID van het bestand.
-pad patroon Bestandsnaam komt overeen met schaalpatroon patroon . De metacharacters behandelen niet / of . speciaal; dus, bijvoorbeeldvind . -path './sr*sc zal een invoer voor een map genaamd ./src/misc afdrukken (indien aanwezig). Als u een hele mappenboom wilt negeren, gebruikt u -snoeien in plaats van elk bestand in de boom te controleren. Als u bijvoorbeeld de map src / emacs en alle bestanden en mappen daaronder wilt overslaan en de namen van de andere gevonden bestanden wilt afdrukken, doet u zoiets als dit:vind . -path './src/emacs' -prune -o -print
-perm modus De machtigingsbits van bestanden zijn exact Mode (octaal of symbolisch). Symbolische modi gebruiken modus 0 als vertrekpunt.
-perm-modus Alle machtigingsbits Mode zijn ingesteld voor het bestand.
-perm + modus Alle machtigingsbits Mode zijn ingesteld voor het bestand.
-regex patroon Bestandsnaam komt overeen met reguliere expressie patroon . Dit is een overeenkomst op het hele pad, niet een zoekopdracht. Als u bijvoorbeeld een bestand met de naam ./fubar3 wilt koppelen, kunt u de reguliere expressie gebruiken .*bar. of . * B. * 3, maar niet b. * r3.
-maat n bckw Bestanden gebruiken n eenheden van ruimte. De eenheden zijn standaard 512-byteblokken of als b volgt n , bytes als c volgt n , kilobytes als k volgt n , of 2-byte woorden als w volgt n . De grootte telt geen indirecte blokken, maar telt wel blokken in schaarse bestanden die niet echt zijn toegewezen.
-True Altijd waar.
-type c Bestand is van het type c :
b Block (gebufferd) special
c Karakter (ongebufferd) speciaal
d directory
p Benoemde pijp (FIFO)
f Regelmatig bestand
l Symbolische link
s stopcontact
D deur (Solaris)
-uid n Het numerieke gebruikers-ID van het bestand is n .
-gebruikt n Bestand is voor het laatst geopend n dagen nadat de status voor het laatst was gewijzigd.
-gebruiker Bestand is eigendom van gebruiker je naam (numerieke gebruikers-ID toegestaan).
-xtype c Hetzelfde als -type tenzij het bestand een symbolische link is. Voor symbolische koppelingen: als -volgen is niet gegeven, waar als het bestand een koppeling naar een bestand van het type is c ; als -volgen is gegeven, waar als c is l. Met andere woorden, voor symbolische koppelingen, -xtype controleert het type bestand dat -type controleert niet.

acties

-exec commando ;

uitvoeren commando ; waar als de 0-status wordt geretourneerd. Alle volgende argumenten voorvind worden beschouwd als argumenten voor het commando tot een argument bestaande uit `; ' wordt aangetroffen. De tekenreeks `{} 'wordt vervangen door de huidige bestandsnaam die overal wordt verwerkt in de argumenten voor de opdracht, niet alleen in argumenten waarin deze alleen voorkomt, zoals in sommige versies vanvind. Beide constructies moeten mogelijk worden ontsnapt (met een ` ') of worden geciteerd om ze te beschermen tegen uitzetting door de shell. De opdracht wordt uitgevoerd in de startmap.

-fls het dossier

True; zoals -ls maar schrijven naar het dossier zoals -afdruk.

-fprint het dossier

True; print de volledige bestandsnaam in het bestand het dossier . Als het dossier bestaat niet wanneervind wordt uitgevoerd, het is gemaakt; als het bestaat, is het afgekapt. De bestandsnamen `` / dev / stdout '' en `` / dev / stderr '' worden speciaal behandeld; ze verwijzen respectievelijk naar de standaarduitvoer en standaard foutuitvoer.

-fprint0 het dossier

True; like -print0 maar schrijf naar het dossier zoals -afdruk.

-fprintf het dossier formaat

True; zoals -printf maar schrijf naar het dossier zoals -afdruk.

-OK commando ;

Like -exec, maar vraag eerst de gebruiker (op de standaardinvoer); als het antwoord niet begint met `y 'of` Y', voer dan de opdracht niet uit en retourneer false.

-afdrukken

True; print de volledige bestandsnaam op de standaarduitvoer, gevolgd door een nieuwe regel.

-print0

True; print de volledige bestandsnaam op de standaarduitvoer, gevolgd door een nul-teken.Hierdoor kunnen bestandsnamen die nieuwe regels bevatten juist geïnterpreteerd worden door programma's die devind output.

-printf formaat

True; afdrukken formaat op de standaarduitvoer, interpreteren van ` 'escapes en` %'-richtlijnen. Veldbreedtes en precisies kunnen worden opgegeven zoals bij de functie `printf 'C. In tegenstelling tot -print, voegt printf geen nieuwe regel toe aan het einde van de reeks. De ontsnappingen en richtlijnen zijn:

een

Alarmbel.

b

Backspace.

c

Stop onmiddellijk met afdrukken vanuit dit formaat en spoel de uitvoer.

f

Formulier-feed.

n

Nieuwe lijn.

r

Koers terug.

t

Horizontaal tabblad.

v

Verticale tab.

\

Een letterlijke backslash (` ').

NNN

Het teken waarvan de ASCII-code NNN (octaal) is.

Een ` 'teken gevolgd door een ander teken wordt behandeld als een gewoon teken, dus beide worden afgedrukt.

%%

Een letterlijk procentteken.

%een

De laatste toegangstijd van bestand in de indeling geretourneerd door de C `ctime'-functie.

%EEN k

De laatste toegangstijd van bestand in het formaat opgegeven door k , wat ofwel `@ 'is of een richtlijn voor de C` strftime'-functie. De mogelijke waarden voor k zijn hieronder vermeld; sommigen van hen zijn mogelijk niet beschikbaar op alle systemen, vanwege verschillen in 'strftime' tussen systemen.

@

seconden sinds 1 januari 1970, 00:00 GMT.

Tijdvelden:

H

uur (00..23)

ik

uur (01.12.12)

k

uur (0..23)

l

uur (1..12)

M

minuut (00..59)

p

locale AM ​​of PM

r

tijd, 12 uur (uu: mm: ss AP M)

S

tweede (00..61)

T

tijd, 24 uur (uu: mm: ss)

X

locale's tijdsrepresentatie (H: M: S)

Z

tijdzone (bijv. EDT), of niets indien geen tijdzone kan worden bepaald

Datum velden:

een

locale's afgekorte weekdagnaam (Sun..Sat)

EEN

locale's volledige naam op doordeweekse dag, variabele lengte (Zondag … Zaterdag)

b

locale's afgekorte maandnaam (Jan..Dec)

B

locale's naam voor de volledige maand, variabele lengte (januari..december)

c

locale's datum en tijd (za nov 04 12:02:33 EST 1989)

d

dag van de maand (01..31)

D

datum (mm / dd / jj)

h

hetzelfde als b

j

dag van het jaar (001..366)

m

maand (01.12.12)

U

weeknummer van het jaar met zondag als eerste dag van de week (00..53)

w

dag van de week (0..6)

w

weeknummer van het jaar met maandag als eerste dag van de week (00..53)

X

datumweergave van de locale (mm / dd / jj)

Y

laatste twee cijfers van het jaar (00..99)

Y

jaar (1970 …)

% b

Bestandsgrootte in blokken van 512 bytes (afgerond naar boven).

% c

De laatste statuswijzigingsstap van bestand in de indeling geretourneerd door de C `ctime'-functie.

% C k

De laatste statuswijzigingstijd van bestand in het formaat dat is opgegeven met k , wat hetzelfde is als voor% A.

% d

Bestanddiepte in de mappenboom; 0 betekent dat het bestand een opdrachtregelargument is.

% f

De naam van het bestand met eventuele leidende mappen verwijderd (alleen het laatste element).

% F

Type van het bestandssysteem waarop het bestand staat; deze waarde kan worden gebruikt voor -fstype.

% g

Bestands-groepsnaam of numerieke groeps-ID als de groep geen naam heeft.

% G

Nummer van de numerieke groep van het bestand.

% h

Toonaangevende directory's van bestandsnaam (alle behalve het laatste element).

% H

Opdrachtregelargument waaronder bestand is gevonden.

%ik

Bestand inode nummer (in decimaal).

% k

Bestandsgrootte in 1K-blokken (afgerond naar boven).

% l

Object van symbolische koppeling (lege tekenreeks als bestand geen symbolische koppeling is).

% m

De machtigingsbits van bestanden (in octaal).

% n

Aantal harde links naar bestand.

% p

Bestandsnaam.

% P

Bestandsnaam met de naam van het opdrachtregelargument waaronder het is gevonden verwijderd.

% s

Bestandsgrootte in bytes.

% t

De laatste modificatietijd van bestand in het formaat geretourneerd door de C `ctime'-functie.

% T k

De laatste wijzigingstijd van bestand in het formaat opgegeven door k , wat hetzelfde is als voor% A.

% u

Bestands gebruikersnaam of numerieke gebruikers-ID als de gebruiker geen naam heeft.

% U

Het numerieke gebruikers-ID van het bestand.

Een% -teken gevolgd door een ander teken wordt weggegooid (maar het andere teken wordt afgedrukt).

-snoeien

Als -depth niet wordt gegeven, waar; daal de huidige map niet af.Als -depth wordt gegeven, false; geen effect.

ls

True; lijst huidige bestand in `ls -dils'-formaat op standaarduitvoer. De bloktellingen zijn van 1K-blokken, tenzij de omgevingsvariabele POSIXLY_CORRECT is ingesteld, in welk geval blokken van 512 byte worden gebruikt.

operators

Vermeld in volgorde van afnemende prioriteit:

( expr )

Forceer voorrang.

! expr

Waar als expr is fout.

-niet expr

Hetzelfde als ! expr .

expr1 expr2

En (impliciet); expr2 wordt niet geëvalueerd als expr1 is fout.

expr1 -een expr2

Hetzelfde als expr1 expr2 .

expr1 -en expr2

Hetzelfde als expr1 expr2 .

expr1 -O expr2

Of; expr2 wordt niet geëvalueerd als expr1 is waar.

expr1 -of expr2

Hetzelfde als expr1 -O expr2 .

expr1 , expr2

Lijst; beide expr1 en expr2 worden altijd geëvalueerd. De waarde van expr1 wordt weggegooid; de waarde van de lijst is de waarde van expr2 .

Voorbeelden

find / home -gebruiker joe

Zoek elk bestand onder de directory / home van de gebruiker joe.

find / usr -name * stat

Zoek elk bestand onder de directory / usr eindigend op ".stat".

vind / var / spool -mtime +60

Zoek elk bestand onder de map / var / spool dat meer dan 60 dagen geleden is gewijzigd.

find / tmp -name core -type f -print | xargs / bin / rm -f

Zoek naar bestanden met de naamkern in of onder de map/ tmp en verwijder ze.Merk op dat dit onjuist zal werken als er bestandsnamen zijn met nieuwe regels, enkele of dubbele aanhalingstekens of spaties.

find / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

Zoek naar bestanden met de naamkern in of onder de map/ tmp en verwijder ze, verwerk bestandsnamen op zo'n manier dat bestands- of mapnamen met enkele of dubbele aanhalingstekens, spaties of nieuwe regels correct worden afgehandeld. De-naam test komt voor de-type test om te voorkomen dat u moet bellenstat (2) op elk bestand.

vind . -type f -exec-bestand '{}' ;

Draait `bestand 'op elk bestand in of onder de huidige map. Merk op dat de accolades zijn ingesloten in enkele aanhalingstekens om ze te beschermen tegen interpretatie als interpunctietekens van de shellscripts. De puntkomma wordt op dezelfde manier beschermd door het gebruik van een backslash, hoewel ';' in dat geval ook had kunnen worden gebruikt.

vind / (-perm -4000 -fprintf /root/suid.txt '% # m% u% p n' ), (-size + 100M -fprintf /root/big.txt '% -10s% p n' )

Traverse het bestandssysteem slechts één keer en zet setuid-bestanden en mappen op/root/suid.txt en grote bestanden in/root/big.txt.

zoek $ HOME -mtime 0

Zoek naar bestanden in uw thuismap die in de afgelopen vierentwintig uur zijn gewijzigd. Deze opdracht werkt op deze manier omdat de tijd sinds elk bestand voor het laatst is gewijzigd, wordt gedeeld door 24 uur en de rest wordt weggegooid. Dat betekent dat matchen-mtime

0, een bestand moet in het verleden een wijziging hebben ondergaan die minder dan 24 uur geleden is.

vind . -perm 664

Zoeken naar bestanden die lees- en schrijfrechten hebben voor hun eigenaar en groep, maar die andere gebruikers kunnen lezen maar niet kunnen beschrijven. Bestanden die aan deze criteria voldoen maar andere rechtenbits hebben ingesteld (bijvoorbeeld als iemand het bestand kan uitvoeren) worden niet gematcht.

vind . -perm -664

Zoek naar bestanden met lees- en schrijfrechten voor hun eigenaar en groep en welke andere gebruikers kunnen lezen, zonder rekening te houden met de aanwezigheid van extra machtigingsbits (bijvoorbeeld de uitvoerbare bit). Dit komt overeen met een bestand dat bijvoorbeeld modus 0777 heeft.

vind . -perm / 222

Zoeken naar bestanden die kunnen worden geschreven door iemand (hun eigenaar, of hun groep, of wie dan ook).

vind . -perm / 220 vind . -perm / u + w, g + w vind . -perm / u = w, g = w

Alle drie deze opdrachten doen hetzelfde, maar de eerste gebruikt de octale weergave van de bestandsmodus en de andere twee gebruiken de symbolische vorm. Deze commando's zoeken allemaal naar bestanden die beschrijfbaar zijn door hun eigenaar of hun groep. De bestanden hoeven niet door de eigenaar en de groep te worden beschreven om te worden vergeleken; ofwel zal doen.

vind . -perm -220 vind . -perm -g + w, u + w

Beide bevelen doen hetzelfde; zoeken naar bestanden die kunnen worden beschreven door zowel de eigenaar als de groep.

vind . -perm -444 -perm / 222! -perm / 111 vind . -perm -a + r -perm / a + w! -perm / a + x

Deze twee opdrachten zoeken beide naar bestanden die voor iedereen leesbaar zijn (-perm -444 of -perm -a + r), hebben tenminste een schrijfbit-set (-perm / 222 of -perm / a + w) maar zijn niet uitvoerbaar voor iedereen (! -perm / 111 en! -perm / a + x respectievelijk)

Belangrijk: Gebruik de man commando ( % man ) om te zien hoe een opdracht wordt gebruikt op uw specifieke computer.