Opdateret: 11/30/2020 af Computer Håber

I Linux-operativsystemer, finde kommandoen kan bruges til at søge efter filer og mapper på din computer. For at fortsætte skal du vælge et link fra følgende liste eller gå gennem hvert afsnit i rækkefølge.

Bemærk

Hvis du vil bruge find, skal du begynde med at åbne en terminalsession for at få adgang til kommandolinjen.

grundlæggende funktionalitet af find

Running find uden nogen muligheder producerer en liste over alle filer og mapper i og under arbejdsmappen., For eksempel, hvis din arbejdsmappe er /home/hope/Documents, kører find output følgende:

  • hver fil i /home/hope/Documents.
  • hver undermappe i/home/hope / Documents.
  • hver fil i hver af disse undermapper.

lad os se det i aktion., Første, lad os kontrollere vores arbejde directory ved hjælp af udstationeringsdirektivet kommando:

pwd
/home/hope/Documents

lad os Nu køre uden nogen muligheder:

find

I dette eksempel ser vi i alt ti filer og fire undermapper i og under vores Dokumenter-mappen.

Bemærk, at output starter med en enkelt prik, som repræsenterer arbejdsmappen., At køre find uden indstillinger er det samme som at specificere, at søgningen skal begynde i arbejdsmappen, sådan:

find .

eksemplet ovenfor er den “rigtige” måde at bruge find på. Hvis du prøver at bruge det på et andet Uni.-lignende operativsystem, f. eks. Det er god praksis at bruge denne form for kommandoen.,

Angivelse af, hvor der skal søges

At kun en liste over filer og undermapper, der er indeholdt i kataloget /home/håber/Dokumenter/billeder, skal du angive det første argument til kommandoen som:

find /home/hope/Documents/images

Bemærk, at den fulde sti er også vist i resultaterne.,

Hvis vores arbejde mappe /home/håber/Dokumenter, kan vi bruge følgende kommando, som finder de samme filer:

find ./images

Men denne gang, output afspejler start placering i søgningen, og ser ud som dette:

Som standard søges i hver undermappe til din startposition. Hvis du vil begrænse, hvor mange niveauer i undermappen, der skal søges, kan du bruge indstillingen-ma .depth med et nummer.angivelse af-Ma .depth 1 Søger kun i det bibliotek, hvor søgningen begynder., Hvis der findes nogen undermapper, vises de, men søges ikke.,

find . -maxdepth 1
../images./bigfiles.txt./gimp-2.8.16.tar.bz2./hp-fanfic./archlinux-2016.02.01-dual.iso

Angivelse -maxdepth til 2 søgninger bibliotek og en undermappe dybt:

find . -maxdepth 2

Angivelse -maxdepth 3 søgninger et niveau dybere end som så:

find . -maxdepth 3

Find ved navn

for At begrænse dine søgeresultater til at matche kun filer og mapper, der har et bestemt navn, bruger -navn option og sætte navnet i anførselstegn:

find . -name "picard.jpg"
./images/memes/picard.jpg

Du kan også bruge jokertegn som en del af din fil navn., For eksempel for at finde alle filer, hvis navn slutter i .jpg, kan du bruge en stjerne til at repræsentere resten af filnavnet. Når du kører kommandoen, shell vil glob filnavnet til noget, der matcher mønsteret:

find . -name "*.jpg"
./images/hp/snape.jpg./images/hp/harry.jpg./images/memes/winteriscoming.jpg./images/memes/picard.jpg

Bemærk, at vores kommando ikke liste den fil, hvis udvidelse (i dette tilfælde, JPG) er med store bogstaver. Det skyldes, at I modsætning til andre operativsystemer, såsom Microsoft .indo .s, er Linu.-filnavne store og små bogstaver.,”>

At liste mapper og udelade filen navne, angiver-type d:

find . -type d
../images./images/hp./images/memes./hp-fanfic

Find filer baseret på størrelse

For eksempel, at finde filer, der er “større end 50 kilobyte”, bruger -size +50k:

find . -size +50k
./images/memes/winteriscoming.jpg./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

For filer, der er større end 10 mb”, bruger -size +10M:

find . -size +10M
./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

For “større end 1 gb”, bruger -size +1G:

find . -size +1G
./archlinux-2016.02.01-dual.iso

For filer i en bestemt størrelse, sortiment, skal du bruge to -size valg., For eksempel, at finde filer, der er større end 10 mb, men mindre end 1 gigabyte”, skal du angive størrelse +10M -size -1G:

find . -size +10M -size -1G
./gimp-2.8.16.tar.bz2

Find filer baseret på ændring, adgang, eller ændre status

– mtime indstilling begrænser søg efter hvor mange dage siden, at filens indhold er blevet ændret. For at angive dage i fortiden skal du bruge et negativt tal., For eksempel kun at finde de filer, der blev ændret i de sidste to dage (48 timer siden), skal du bruge-mtime -2:

find . -mtime -2

– mmin-indstillingen gør det samme, men med hensyn til minutter, ikke dage. For eksempel viser denne kommando kun filer, der er ændret i den sidste halve time:

find . -mmin -30

en lignende mulighed er-ctime, der kontrollerer, hvornår en fils status sidst blev ændret, målt i dage. En statusændring er en ændring i filens metadata. For eksempel er ændring af tilladelser for en fil statusændring.,

indstillingen-cmin søger efter en statusændring målt i minutter.

Du kan også søge efter, hvornår en fil sidst blev åbnet — med andre ord, når dens indhold senest blev set. Indstillingen-atime bruges til at søge efter filer baseret på deres seneste adgangstid, målt i dage.

– amin-indstillingen udfører den samme søgebegrænsning, men måles i minutter.

omdirigere output til en tekstfil

Hvis du udfører en meget stor søgning, kan du gemme dine søgeresultater i en fil, så du kan se resultaterne senere., Du kan gøre dette ved at omdirigere dit find-output til en fil:

find . -iname "*.jpg" > images.txt

Du kan derefter åbne dine resultater i en teksteditor eller udskrive dem med cat-kommandoen.

cat images.txt

Alternativt, kan du pipe output til tee-kommando, der printer output til skærmen og skrive det til en fil:

find . -size +500M | tee bigfiles.txt
./archlinux-2016.02.01-dual.iso
cat bigfiles.txt
./archlinux-2016.02.01-dual.iso

Undertrykke fejlmeddelelser

Du modtager muligvis fejlmeddelelsen “adgang nægtet”, når du udfører en søgning., Søger i rodmappen som en normal bruger:

find /

, vil du modtage denne fejlmeddelelse, hvis find forsøger at få adgang til en fil, din brugerkonto ikke har tilladelse til at læse. Du kan udføre søgningen som superbruger (root), som har fuld adgang til alle filer på systemet. Men det anbefales ikke at gøre tingene som root, medmindre der ikke er andre muligheder.,

Hvis alt du behøver at gøre er at skjule de “Tilladelse nægtet” – beskeder, kan du tilføje 2&>1 | grep -v “Tilladelse nægtet” til slutningen af din kommando som denne:

find / 2>&1 | grep -v "Permission denied"

ovenstående eksempel filtrerer “Tilladelse nægtet” – beskeder fra din søgning. Hvordan?

2>&1 er en speciel redirect, der sender fejlmeddelelser til standard output pipe den kombinerede linjer af output til grep kommandoen., grep – v udfører derefter en omvendt kamp på “Permission denied”, der kun viser linjer, der ikke indeholder den streng.omdirigering og brug af grep til at filtrere fejlmeddelelserne er en nyttig teknik, når “Tilladelse nægtet” rodet dine søgeresultater, og du kan ikke udføre søgningen som root.

eksempler

find ~/. -name "*.txt" -amin -120

Find alle filer i din hjemmemappe og under hvilken ende i udvidelsen “.t “t”. Vis kun filer, der er adgang til i de sidste to timer.,

find . -name "*.zip" -size +10M -mtime -3

Find alle filer i arbejdsmappen og under hvis navn har udvidelsen “.zipip ” og hvis størrelse er større end 10 megabyte. Vis kun filer, hvis indhold blev ændret i de sidste 72 timer.

find . -iname "*report*" -type f -maxdepth 2

udfør en case-ufølsom søgning efter filer, der indeholder ordet “rapport” i deres navn. Hvis søgningen finder en mappe med “rapport” i sit navn, skal du ikke vise den. Søg kun i arbejdsmappen og et mappeniveau under det.,

find / -name "*init*" 2>&1 | grep -v "Permission denied" | tee ~/initfiles.txt

Find alle filer på systemet, hvis navn indeholder” init”, undertrykker fejlmeddelelser. Vis resultater på skærmen og output dem til en fil i dit hjem mappe med navnet “initfiles.t “t”.