Linux find
kommando er et kraftfuldt værktøj, der gør det muligt for systemadministratorer til at finde og administrere filer og mapper, der er baseret på en bred vifte af søgekriterier. Det kan finde mapper og filer efter deres navn, deres type eller udvidelse, størrelse, tilladelser osv.
udover at finde filer og mapper, kan du kombinere kommandoen find
med andre, så du kan handle på resultaterne., Tilføje -exec
option gør det muligt for systemadministratorer at køre eksterne kommandoer og udføre handlinger såsom kopiering, flytning, sletning eller ændring af rettigheder på filer, der matcher de angivne kriterier såsom størrelse, navn, osv.
i denne artikel starter vi med at forklare de grundlæggende Linu.find-kommandoer med eksempler. Dette viser dig, hvordan du finder filer og mapper. Vi viser dig derefter, hvordan du bruger -exec
mulighed for 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,
i denne tutorial vil vi forklare, hvordan du finder filer og mapper, der matcher specificerede mønstre. Vi vil også se, hvordan du udfører handlinger på de filer eller mapper, som find-kommandoen finder. Guiden er baseret på Ubuntu, men gælder for de fleste Linu. – distributioner og versioner.
Find filer og Mapper
Find bestemte filer efter navn eller lokalnummer
for At søge efter en bestemt fil, skal du køre følgende kommando fra root (/)., Kommandoen indeholder det nøjagtige navn på den fil, du søger efter.
find . -name file22.txt
Output
./test/file22.txt./sales/file22.txt
bemærk, at resultaterne inkluderer stien. Dette er vigtigt, hvis du ikke kender den mappe, hvor filen er placeret, eller når den er på mere end .t sted.
Du kan også søge efter filen i en anden mappe, mens den stadig er på den aktuelle placering. I dette tilfælde skal du angive stien til det bibliotek, hvor du vil søge.,
find ./test -name file22.txt
Leder du efter specifikke filer i et andet bibliotek
i vores tilfælde vil vi kigge efter alle dem, der starter med bogstavfilen i testmappen.
find ./test -name file*
Output
./test/file22.txt./test/file30.doc./test/file1.txt./test/file5,doc
Søg efter filer med filtypenavnet
for At finde en fil i Linux med en vis udvidelse, kan du føje den til kommandoen.,
find . -name *.txt
Output
./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 nedenstående kommando for at søge efter filer og mapper, der starter med de pågældende bogstaver qa
. I vores computer, er vi nødt qatree.txt
og qa.txt
filer, samt en mappe ved navn qa
.,
Hvis vi køre kommandoen;
find ./ -name "qa*"
Det giver følgende output
./test/qatree.pdf./test/qa.txt./home/qa
kommandoen returnerer både filer og mapper, der matcher dine søgekriterier. For kun at finde filer eller mapper skal du angive dette i kommandoen.
Find kun filer eller mapper
kun for filer skal du bruge knappen type f
.
Filer
find ./ -type f -name "qa*"
Output
./test/qatree.pdf./test/qa.txt
Kataloger kun
Tilføj type d
mulighed for at finde mapper, kun.,
find ./ -type d -name "qa*"
Output
./home/qa
mellem store og små bogstaver find-kommando
Alle søgninger med -name
skifte mellem store og små bogstaver, og vil ikke give resultater med store bogstaver. For at få alle tilfælde skal du bruge indstillingen -iname
.
find ./ -iname "qa*"
Output
./test/qatree.pdf./test/qa.txt./test/QAtest.txt./home/qa
Søg efter en fil fra flere mapper
for At finde de filer i forskellige mapper, tilføje deres stier i kommandoen., I vores tilfælde tjekker vi katalogerne test
og numeric
.
find ./test ./numeric -name file22.txt -type f
Output
./test/file22.txt/root/numeric/file22.txt
Find flere filer med forskellige udvidelser fra alle mapper
Du kan bruge kommandoen søg til at finde flere filer, der deler de forskellige udvidelser, som f.eks. *.doc
*.txt
*.pdf
osv. Dette kan gøres separat, en udvidelse ad gangen eller ved hjælp af kun en kommando, der indeholder alle de ønskede udvidelser.,
find . -type f ( -name "*.txt" -o -name "*.pdf" -o -name "*.doc" )
output
Find filer, der indeholder bestemt tekst
Nogle gange vil du have adgang til en fil, der indeholder bestemt tekst, men 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 søge efter alle filer, der indeholder ordet hyperconvergence”, skal du bruge;
find / -type f -exec grep -l -i "hyperconvergence" {} ;
Output
/root/numeric/hci/root/HCIP
–jeg mulighed aktiverer kommandoen til at ignorere tilfælde, og vil finde ud af teksten, om kapitaliserede eller ej, dvs hyperconvergence, Hyperconvergence , osv.,
At lede efter de filer i en bestemt mappe, skal du blot føje den til kommandoen
find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;
Output
./numeric/hci
Finde Filer og Mapper på baggrund af Størrelse
Du kan finde alle filer eller mapper, der er mindre, lig med eller større end en vis størrelse, inden for et bestemt interval eller tom. Brug det passende størrelsesformat afhængigt af typen af filer eller mapper, du søger efter.,nd filer af en vis størrelse – lige til 30MB
for at Søge At finde alle 30MB filer
find / -size 30M
Find filer der er større end en angivet størrelse
find -size +2M
Output
. /Downloads/ubuntu18043.iso ./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c
Find filer mindre end 10MB i den aktuelle mappe
find . -type f -size -10M
Find filer med størrelser på mellem 100-200 MB
Når man søger efter filer inden for et bestemt interval, f.eks mellem 100 og 200 MB
find / -size +100M -size -200M
Se efter mapper, der er større end 20kb
find / -type d -size +20k
Find tomme filer og mapper.,
Filer
find ./ -type f -size 0
eller
find ./ -type f –empty
Mapper
find ./ -type d –empty
Find filer af alder eller ændring af tidspunkt
Finde filer, der er ældre end n dage
find /path/ -type f -name '*.txt' -mtime +8
-mtime +8
vil se for txt
filer, der er ældre end 8 dage.,
Ved ændringsdato
Dette vil se ud for filer, der er ændret inden for de sidste 17 timer
find . -mtime -17 -type f
Ser ud til mapper ændret inden for de sidste 10 dage.
find . -mtime -10 -type d
Find filer baseret på adgang til eller ændring
Finde filer, baseret på dato eller et klokkeslæt åbnes. Dette giver dig mulighed for at se filer, der har eller ikke er blevet adgang til inden for en bestemt periode.
for at se filer, der ikke er åbnet inden for de sidste 10 dage i hjemmemappen.,
find /home -atime +10
– Filer adgang til præcis 10 dage siden
find /home -atime 10
åbnet i de sidste 10 dage.
find /home -atime -10
Finde filer, der er ændret inden for de seneste n dage
Du kan også kigge efter filer i /home
mappe ændret inden for de sidste 10 dage ved hjælp af kommandoen;
find /home -mtime -10
Finde filer, der er ændret inden for en specifik periode.
for eksempel alle filer ændret mellem 6 og 15 dage siden i hjemmemappen.,
find /home -type f -mtime +6 -mtime -15
Filer og mapper tilgængelige inden for de sidste 10 minutter
for At finde de filer, der er tilgået inden for de sidste 10 minutter, så brug -amin mulighed.
find . -amin -10 -type f
Output
./.bash_history./.profileroot@ubuntu1804:~#
adgang til Mapper inden for de sidste 10 minutter
find . -amin -10 -type d
Find filer, der matcher specifikke tilladelser
Syntaks
$ find -perm mode
Hvor mode er den tilladelse, der er enten numeriske såsom 644, 655, 700, 777
osv, eller bogstaver, som f.eks. 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 nøjagtige tilladelser angivet.
- med”
-
” for filer med mindst den angivne tilladelse. Dette returnerer filer med de angivne samt yderligere højere tilladelser. - brug af ”
/
” kræver angivelse af ejeren eller gruppen med tilladelse til filen.,
Find filer med tilladelse 777
find -perm 777
Output
./file1
Finde filer med mindst 766
find -perm -766
Output
./file2./file1
kommandoen ser ud til alle filer, hvor
- filer ejeren har læse/skrive/køretilladelse.
- gruppen har læse / skrive tilladelser
- andre har læse/skrive tilladelse
som sådan returnerer den to filer, der opfylder dette kriterium – file1 og file2., Filerne behøver ikke at have den nøjagtige766
tilladelser og kan have yderligere dem så længe, men skal have mindst den angivne.
Find filer, der kan skrives af ejeren
Vi bruger nu “/
” til at søge efter filer, der kan skrives af enten deres ejer eller gruppe eller andre.
find -perm /222../file2./file3./file1
ovenstående søger 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.,
./file2./file1
Find filer der ejes af en bruger
Finde alle filer, der er ejet af 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
Find bestemte filer der ejes af en bruger
Finde alle tekstfiler, der ejes af Jack
find /home -user jack -iname "*.txt"
Output
/home/jack/docs/file32.txt
Find og en liste over filer og mapper sammen med deres tilladelser
find -name "*.conf" | ls -l
Output
Find og handle på de resultater
I dette afsnit, vi vil se på, hvordan du kan handle på de filer, der svarer til det mønster, der er specificeret i find-kommando.,
Find filer og ændre tilladelser
Find og ændre tilladelser for bestemte filtyper. I vores tilfælde vil vi arbejde med PHP-filer med forskellige tilladelser som vist nedenfor.,
Vi vil nu se for alle PHP-filer (ovenfor), og udskift deres tilladelser med 755
find ver -name "*.php" -type f -exec chmod 755 {} ;
kommandoen ser ud til PHP filer i ver
bibliotek, og derefter sætter deres tilladelse til at 755
(rwxr-xr-x
)
Resultater
Find og ændre fil og mappe tilladelser
Finde filer med 644 tilladelser og ændre dem til at have 655 tilladelser
find . -type f -perm 644 -exec chmod 655 {} ;
Du kan også søge efter mapper med 644 tilladelser og erstatte denne med 755.,
find . -type d -perm 644
Output
./docs
docs-mappen har 644 tilladelser
drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs
for At indstille den til 755
vi kører
find . -type d -perm 644 -exec chmod 755 {} ;
Nu kan vi så ind igen for at se, hvad der præcist 755
find . -type d -perm 755
Output
.
./docs
ovenfra kan vi se root-og docs-mapperne har 755 tilladelser.,
Ls –la
kommando giver følgende oplysninger
drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs
Find og kopiere filer eller mapper
Finde og kopiere en bestemt fil til en mappe
kommandoen nedenfor vil du finde file22.tx
t-fil og kopiere den til ~/tmp/images
bibliotek.,
find -iname file22.txt -exec cp {} ~/tmp/images ;
Finde og kopiere en type af filer til en mappe
for At finde filer, såsom billeder med jpg
udvidelse i den aktuelle mappe og kopiere dem til en anden placering som en billeder i mappen, skal du bruge;
find -iname '*.jpg' -exec cp {} ~/tmp/images ;
Dette vil finde og kopiere alle de jpg-filer til ~/tmp/images
mappe.
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 den fil, hci-fil og kopiere den til de tre biblioteker i /tmp/dir1/ /tmp/dir2/
og $HOME/3/
Find og flytte filer til en anden mappe
for At flytte en kendt fil fra en mappe til en anden., For at flytte universal.php
fil;
find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;
Søg og flytte filer med en given endelse til en anden mappe
find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;
Find visse filer og flytte til en bestemt anden mappe
find -type f -name uni*.* -exec mv {} ~/unifiles/ ;
kommandoen ser for alle de filer med navne, der starter med uni
og med en udvidelse. Det flytter dem derefter til mappen /unifiles/
Find og flyt filer baseret på alder
Find og flyt filer, der er ældre end bestemte dage, til et andet sted, f.eks. arkivet.,
find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;
Dette vil søge efter pdf-filer, der er ældre end 20 dage, og flytte dem til backup1-mappen.,filer og mapper
syntaks til at finde og fjerne filer eller mapper i den aktuelle mappe er
find . -type f -name "file to delete" -exec rm -f {} ;
for at slette filer eller
find . -type d -name "dir-to-delete" -exec rm -rf {} ;
for at slette mapper kun
Find og slette bestemte filer
for At finde og slette filer, der starter med til, brug;
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 begge filer og mapper
find . -name "til*" -exec rm -rf {} ;
Dette vil fjerne både filer og mapper, der starter med de pågældende bogstaver til.,
Slet ved udvidelse
Nedenfor er, hvordan du kan finde og slette alle txt
filer i den aktuelle mappe. Udskift txt
med en anden udvidelse som f.eks. bak
pdf
eller enhver anden, som du ønsker at fjerne.
find . -type f -name "*.txt" -exec rm -f {} ;
Hvis du vil have systemet til at 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 {} ;
Output
Som standard -rm
vil ikke fjerne mapper, og du er nødt til at bruge –r
mulighed for at sikrer en rekursiv fjernelse. Dette sikrer sletning af tomme mapper og dem, der indeholder filer. Indstillingen-f
tvinger fjernelsen og bruges til både filer og mapper.
Find og Slet filer ældre end n dage
Find og Slet backup filer ældre end 20 dage fra den aktuelle mappe.,
find . -type f -name '*.bak' -mtime +20 -exec rm {} ;
Dette vil slette alle .bak
filer ældre end 20 dage.
Find og slette mapper kun
for At slette en mappe der hedder dir22
find . -type d -name dir22 -exec rm -rf {} ;
Sikre, at du matcher den mappe navn tilfælde eller bruge -iname
option.
find . -type d -iname Dir22 -exec rm -rf {} ;
Fjerner både Dir22
og dir22
for At bekræfte, inden sletningen, skal du bruge-jeg mulighed.
find . -type d -iname Dir22 -exec rm -rf -i {} ;
Output
rm: Fjern mappe ‘./Dir22’?, N
rm: Fjern directory ‘./dir22’? y
I vores tilfælde, vi har skrevet n
efter mappe Dir22
der vil ikke blive slettet, og y
til den 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 /findargs rm-f
eller
find.,/ – type f-størrelse 0-slet
Find og fjern tomme mapper
for at fjerne tomme mapper bruger vid
mulighed.
find ./ -type d -empty -exec rmdir {} ;
et andet alternativ er at bruge Slet i stedet for fjern.
find ./ -type d -empty -delete
bemærk, at sletning af system eller kritiske filer fra din computer kan beskadige operativsystemet eller applikationer eller føre til tab af dine vigtige data.
for at undgå utilsigtede sletninger er det bedste praksis at bruge en ikke-root-brugerkonto., Sørg også for, at du sletter de rigtige filer, der ikke er nyttige, og at du har en sikkerhedskopi af alle dine datafiler, bare i tilfælde.
Hvad er det næste?
gå videre og prøv ovenstående Linu.find kommandoer i dit laboratorium eller ikke produktionsmiljø. Se om du kan bruge nogle til at automatisere filsystemet oprydning med Crontab. Og for at mestre Linu., tjek dette online kursus.