40 bedste eksempler på kommandoen Find i Linux

Linux find kommandoen er et kraftfuldt værktøj, der gør det muligt for systemadministratorer at finde og administrere filer og mapper baseret på en lang række søgekriterier. Det kan finde mapper og filer efter deres navn, deres type eller udvidelse, størrelse, tilladelser osv.

Udover at lokalisere filer og mapper, giver kombinationen find-kommandoen med andre dig mulighed for at handle på resultaterne. Tilføjelse af -exec-indstillingen gør det muligt for sysadmins at køre eksterne kommandoer og udføre handlinger som kopiering, flytning, sletning eller ændring af tilladelser af filerne, der matcher de angivne kriterier såsom størrelse, navn osv.

I denne artikel vil vi starte med at forklare de grundlæggende Linux-findingskommandoer med eksempler. Dette vil vise dig, hvordan du finder filer og mapper. Vi vil derefter vise dig, hvordan du bruger -exec-indstillingen til at handle på filerne eller mapperne baseret på deres størrelse, tilladelser osv.

Den generelle syntaks for find-kommandoen er

find {path} {name -of-file or dir-to-search} {action-to-take}

Hvor,

  • sti angiver mappen.
  • navn på fil eller dir-to-search : Navnet på filen eller mappen, der skal søges efter
  • handling, der skal tages: såsom kopiere, slette, flytte osv.

I denne vejledning vil vi forklare, hvordan du finder filer og mapper, der matcher specificerede mønstre. Vi vil også se, hvordan man udfører handlinger på de filer eller mapper, som find-kommandoen lokaliserer. Vejledningen er baseret på Ubuntu, men gælder for de fleste Linux-distributioner og -versioner.

Indholdsfortegnelse

Find filer og mapper

Find bestemte filer efter navn eller filtypenavn

For at lede efter en bestemt fil skal du køre følgende kommando fra roden (/). Kommandoen indeholder det nøjagtige navn på den fil, du søger efter.

find . -name file22.txt

Produktion

./test/file22.txt
./sales/file22.txt

Bemærk venligst, at resultaterne inkluderer stien. Dette er vigtigt, hvis du ikke kender den mappe, hvor filen er placeret, eller når den er mere end ét sted.

Du kan også søge efter filen i en anden mappe, mens du stadig er på den aktuelle placering. I dette tilfælde skal du angive stien til den mappe, hvor du vil søge.

find ./test -name file22.txt

Leder efter specifikke filer i en anden mappe

I vores tilfælde vil vi lede efter alle dem, der starter med bogstavfilen i testmappen.

find ./test -name file*

Produktion

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

Søg efter filer efter filtypenavn

For at finde en fil i Linux med en bestemt udvidelse skal du tilføje den til kommandoen.

find . -name *.txt

Produktion

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

Find filer og mapper efter navn

Brug kommandoen nedenfor til at søge efter filer og mapper, der starter med bogstaverne qa. På vores computer har vi filerne qatree.txt og qa.txt samt en mappe med navnet qa.

  Sådan opgraderes til Libre Office 6.0 på Linux

Hvis vi kører kommandoen;

find ./ -name "qa*"

Det returnerer følgende output

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

Kommandoen returnerer både filer og mapper, der matcher søgekriterierne. For kun at finde filer eller mapper, skal du angive dette i kommandoen.

Find kun filer eller mapper

Brug kun type f-kontakten til filer.

Kun filer

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

Produktion

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

Kun mapper

Tilføj indstillingen type d for kun at finde mapper.

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

Produktion

./home/qa

Find-kommando, der ikke skiller mellem store og små bogstaver

Alle søgninger med -name switch skelner mellem store og små bogstaver og vil ikke give resultater med store bogstaver. Brug indstillingen -iname for at få alle sager.

find ./ -iname "qa*"

Produktion

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

Søg efter en fil fra flere mapper

For at finde filerne i forskellige mapper skal du tilføje deres stier i kommandoen. I vores tilfælde tjekker vi test- og numeriske mapper ind.

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

Produktion

./test/file22.txt
/root/numeric/file22.txt

Find flere filer med forskellige udvidelser fra alle mapper

Du kan bruge kommandoen find til at finde flere filer, der deler de forskellige udvidelser såsom *.doc, *.txt *.pdf osv. Dette kan gøres separat, én udvidelse ad gangen eller kun ved at bruge én kommando, der inkluderer alle de ønskede udvidelser.

finde . -type f ( -navn “*.txt” -o -navn “*.pdf” -o -navn “*.doc”)

produktion

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

Find filer, der indeholder bestemt tekst

Nogle gange vil du have adgang til en fil, der indeholder bestemt tekst, men du kan ikke huske dens filnavn eller placering. Denne kommando giver dig mulighed for at finde alle de filer, der indeholder din måltekst.

For at lede efter alle filerne, der indeholder ordet hyperkonvergens”, brug;

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

Produktion

/root/numeric/hci
/root/HCIP

Indstillingen –i gør det muligt for kommandoen at ignorere tilfælde og vil finde teksten, uanset om den er skrevet med stort eller ej, dvs. hyperkonvergens, hyperkonvergens osv.

For at søge efter filerne i en bestemt mappe skal du blot tilføje dem til kommandoen

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

Produktion

./numeric/hci

Udforsk flere eksempler på grep-kommandoer.

Find filer og mapper baseret på størrelse

Du kan finde alle filer eller mapper, der er mindre, lig med eller større end en bestemt størrelse, inden for et bestemt område eller tomme. Brug det passende størrelsesformat afhængigt af typen af ​​filer eller mapper, du søger efter.

Størrelsesmuligheder inkluderer;

c – bytes

k – kilobytes

M – Megabytes

G – Gigabyte

Find filer af en vis størrelse – svarende til 30 MB

Find alle 30MB filer for at søge

find / -size 30M

Find filer, der er større end en specificeret størrelse

find -size +2M

Produktion

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

Find filer på mindre end 10 MB i den aktuelle mappe

find . -type f -size -10M

Find filer med størrelser mellem 100-200 MB

Når du leder efter filer inden for et specifikt område, såsom mellem 100 og 200 MB

find / -size +100M -size -200M

Se efter mapper større end 20 kb

find / -type d -størrelse +20k

Find tomme filer og mapper.

Filer

find ./ -type f -størrelse 0

eller

find ./ -type f –empty

Vejviser

find ./ -type d –empty

Find filer efter alder eller ændringstid

Find filer, der er ældre end n dage

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

-mtime +8 vil lede efter txt-filer, der er ældre end 8 dage.

Efter ændringsdato

Dette vil se efter filer, der er ændret inden for de sidste 17 timer

find . -mtime -17 -type f 

Søger efter mapper, der er ændret inden for de sidste 10 dage

find . -mtime -10 -type d 

Find filer baseret på adgang eller ændring

Find filer baseret på dato eller klokkeslæt. Dette giver dig mulighed for at se filer, der har eller ikke er blevet tilgået inden for en bestemt periode.

  De 5 bedste Arch Linux AUR Helper Apps at bruge

For at se filer, der ikke er blevet tilgået inden for de sidste 10 dage i hjemmemappen.

find /home -atime +10

Filer tilgået for præcis 10 dage siden

find /home -atime 10

Tilgået inden for de seneste 10 dage

find /home -atime -10

Find filer, der er ændret inden for de sidste n dage

Du kan også se efter filerne i /home-mappen, der er ændret inden for de sidste 10 dage ved at bruge kommandoen;

find /home -mtime -10 

Find filer, der er ændret inden for en bestemt periode.

For eksempel alle filer, der er ændret for mellem 6 og 15 dage siden i hjemmemappen.

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

Filer og mapper, der er tilgået inden for de sidste 10 minutter

For at finde de filer, der er tilgået inden for de sidste 10 minutter, skal du bruge -amin-indstillingen.

find . -amin -10 -type f

Produktion

./.bash_history
./[email protected]:~#

Mapper, der er tilgået inden for de sidste 10 minutter

find . -amin -10 -type d

Find filer, der matcher specifikke tilladelser

Syntaks

$ find -perm mode

Hvor tilstand er tilladelsen, som enten er numerisk såsom 644, 655, 700, 777 osv., eller bogstaver som u=x, a=r+x osv.

Du kan angive tilstanden på følgende tre forskellige måder.

  • Uden et præfiks, når du vil finde filer med de præcise tilladelser, der er angivet.
  • Med “-” for filer med mindst den angivne tilladelse. Dette returnerer filer med de angivne samt yderligere højere tilladelser.
  • Brug af “/” kræver specificering af ejeren eller gruppen med tilladelsen til filen.
  • Find filer med tilladelse 777

    find -perm 777

    Produktion

    ./file1

    Find filer med mindst 766
    find -perm -766

    Produktion

    ./file2
    ./file1

    Kommandoen leder efter alle filer, hvori

    • Filejeren har læse-/skrive-/udførelsestilladelser.
    • Gruppen har læse-/skrivetilladelser
    • Andre har læse-/skrivetilladelse

    Som sådan returnerer den to filer, der opfylder dette kriterium – fil1 og fil2. Filerne behøver ikke at have de nøjagtige 766-tilladelser og kan have yderligere tilladelser så længe, ​​men skal mindst have de specificerede.

    Find filer, der kan skrives af ejeren

    Vi vil nu bruge “/” til at søge efter filer, der kan skrives af enten deres ejer, gruppe eller andre.

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

    Ovenstående leder efter filer, der kan skrives af enten deres ejer eller gruppe.
    Dette returnerer filer, der kan skrives af begge, men ikke nødvendigvis begge. For at se filer, hvor begge har skrivbare tilladelser, skal du bruge præfikset –.

    find -perm -220

    Produktion

    ./file2
    ./file1

    Find filer, der ejes af en bruger

    Find alle filer, der ejes af Jack

    find /home -user jack

    Produktion

    /home/jack
    /home/jack/examples.desktop
    /home/jack/.gnupg
    /home/jack/.gnupg/private-keys-v1.d
    /home/jack/ans.cgi

    Find specifikke filer, der ejes af en bruger

    Find alle tekstfiler, der ejes af Jack

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

    Produktion

    /home/jack/docs/file32.txt

    Find og liste filer og mapper sammen med deres tilladelser

    find -name "*.conf" | ls -l

    Produktion

    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 root 0 Jan 4 12:02 file22.doc
    drwxr-xr-x 2 root root 4096 Jan 4 12:14 file23
    -rw-r--r-- 1 root root 0 Jan 4 12:23 file23.txt

    Find og reager på resultaterne

    I dette afsnit vil vi se på, hvordan du kan handle på de filer, der matcher det mønster, der er angivet i find-kommandoen.

    Find filer og skift tilladelser

    Find og rediger tilladelser for bestemte filtyper. I vores tilfælde vil vi arbejde med PHP-filer med forskellige tilladelser som vist nedenfor.

    [email protected]:~/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 jack 0 Jan 3 14:06 query.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 vary.php

    Vi vil nu lede efter alle PHP-filerne (ovenfor) og erstatte deres tilladelser med 755

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

    Kommandoen leder efter PHP-filer i ver-mappen og sætter derefter deres tilladelse til 755 (rwxr-xr-x)

    Resultater

    [email protected]:~/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 jack 0 Jan 3 14:06 query.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 vary.php

    Find og skift fil- og mappetilladelser

    Find filer med 644 tilladelser, og skift dem til at have 655 tilladelser

    find . -type f -perm 644 -exec chmod 655 {} ;

    Du kan også kigge efter mapper med 644 tilladelser og erstatte dette med 755.

    find . -type d -perm 644

    Produktion

    ./docs   

    Dokumentmappen har 644 tilladelser

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

    For at sætte den til 755 kører vi

    find . -type d -perm 644 -exec chmod 755 {} ;

    Nu kan vi tjekke igen for at se, hvad der præcist er 755

    find . -type d -perm 755

    Produktion
    .
    ./docs

      7 gode Linux-app-alternativer til Windows-apps

    Fra oven kan vi se root- og docs-mapperne har de 755 tilladelser.

    Ls –la kommando giver følgende detaljer

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

    Find og kopier filer eller mapper

    Find og kopier en bestemt fil til en mappe

    Kommandoen nedenfor finder filen file22.txt og kopierer den til mappen ~/tmp/images.

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

    Find og kopier én type filer til en mappe

    For at finde filer såsom billeder med filtypenavnet jpg i den aktuelle mappe og kopiere dem til en anden placering som en billedmappe, skal du bruge

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

    Dette vil finde og kopiere alle jpg-filerne til mappen ~/tmp/images.

    Find og kopier en fil til mange mapper

    Find og kopier en enkelt til flere mapper.

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

    Dette vil finde filen hci filen og kopiere den til de tre mapper /tmp/dir1/ /tmp/dir2/ og $HOME/3/

    Find og flyt filer til en anden mappe

    At flytte en kendt fil fra en mappe til en anden. For at flytte filen universal.php;

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

    Søg og flyt filer med en bestemt udvidelse til en anden mappe

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

    Find bestemte filer og flyt til en bestemt anden mappe

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

    Kommandoen leder efter alle filer med navne, der starter med uni og har en hvilken som helst filtypenavn. Det flytter dem derefter til mappen /unifiles/

    Find og flyt filer baseret på alder

    Find og flyt filer, der er ældre end de angivne dage til en anden placering, såsom arkivet.

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

    Dette vil lede efter pdf-filer, der er ældre end 20 dage og flytte dem til backup1-mappen.

    Find og slet filer og mapper

    Syntaksen for at finde og fjerne filer eller mapper i den aktuelle mappe er

    finde . -type f -navn “fil der skal slettes” -exec rm -f {} ; kun at slette filer eller

    finde . -type d -navn “dir-to-delete” -exec rm -rf {} ; kun at slette mapper

    Find og slet kun bestemte filer

    For at finde og slette filer, der starter med til, skal du bruge;

    find . -type f -name "til*" -exec rm {} ; 

    For at finde og slette mapper, der starter med til

    find . -type d -name "til*" -exec rm {} ;

    Fjern både filer og mapper

    find . -name "til*" -exec rm -rf {} ; 

    Dette vil fjerne både filer og mapper, der starter med bogstaverne til.

    Slet i forlængelse

    Nedenfor kan du se, hvordan du kan finde og slette alle txt-filer i den aktuelle mappe. Erstat txt’en med en anden udvidelse såsom bak, pdf eller enhver anden, som du vil fjerne.

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

    Hvis du ønsker, at systemet skal bede dig om at bekræfte, før du sletter hver fil, skal du tilføje -i-indstillingen som nedenfor.

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

    Produktion

    rm: remove regular empty file './File22.txt'? y
    rm: remove regular empty file './file22.txt'? y
    rm: remove regular empty file './file23.txt'?

    Som standard vil -rm ikke fjerne mapperne, og du skal bruge -r-indstillingen for at sikre en rekursiv fjernelse. Dette sikrer sletning af tomme mapper og dem, der indeholder filer. Indstillingen -f tvinger fjernelse og bruges til både filer og mapper.

    Find og slet filer, der er ældre end n dage

    Find og slet backupfiler, der er ældre end 20 dage fra den aktuelle mappe.

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

    Dette vil slette alle .bak-filer, der er ældre end 20 dage.

    Find og slet kun mapper

    For at slette en mappe kaldet dir22

    find . -type d -name dir22 -exec rm -rf {} ;

    Sørg for, at du matcher mappenavnets store og små bogstaver, eller brug muligheden -iname.

    find . -type d -iname Dir22 -exec rm -rf {} ;

    Fjerner både Dir22 og dir22

    For at bekræfte før sletning, brug -i-indstillingen.

    find . -type d -iname Dir22 -exec rm -rf -i {} ;

    Produktion
    rm: fjerne mappen ‘./Dir22’? n
    rm: fjerne mappen ‘./dir22’? y

    I vores tilfælde skrev vi n for mappe Dir22, som ikke vil blive slettet og y for dir22, som nu vil blive fjernet.

    Find og fjern tomme filer

    Du kan bruge en af ​​følgende kommandoer til at finde tomme filer og slette dem automatisk.

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

    eller
    find ./ -type f -størrelse 0 | xargs rm -f
    eller
    find ./ -type f -størrelse 0 -slet

    Find og fjern tomme mapper

    For at fjerne tomme mapper vil vi bruge d-indstillingen.

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

    Et andet alternativ er at bruge slet i stedet for fjern.

    find ./ -type d -empty -delete

    Bemærk venligst, at sletning af systemfiler eller kritiske filer fra din computer kan beskadige operativsystemet eller programmerne eller føre til tab af dine vigtige data.

    For at undgå utilsigtede sletninger er det bedste praksis at bruge en ikke-rodbrugerkonto. Sørg også for, at du sletter de rigtige filer, der ikke er nyttige, og at du har en sikkerhedskopi af alle dine datafiler for en sikkerheds skyld.

    Hvad er det næste?

    Gå videre og prøv ovenstående Linux-find-kommandoer i dit laboratorium eller IKKE-PRODUKTION-miljø. Se om du kan bruge nogle til at automatisere filsystemoprydningen med Crontab. Og for at mestre Linux, tjek dette online kursus.