kommandot Linux find
är ett kraftfullt verktyg som gör det möjligt för systemadministratörer att hitta och hantera filer och kataloger baserat på ett brett utbud av sökkriterier. Det kan hitta kataloger och filer med deras namn, deras typ, eller förlängning, storlek, behörigheter, etc.
förutom att hitta filer och kataloger, kombinera kommandotfind
med andra kan du vidta åtgärder på resultaten., Genom att lägga till alternativet-exec
kan sysadmins köra externa kommandon och utföra åtgärder som att kopiera, flytta, radera eller ändra behörigheter för de filer som matchar de angivna kriterierna, t.ex. storlek, namn etc.
i den här artikeln börjar vi med att förklara de grundläggande Linux find-kommandona med exempel. Detta visar hur du hittar filer och kataloger. Vi kommer då att visa dig hur du använder alternativet -exec
för att agera på filerna eller katalogerna baserat på deras storlek, behörigheter etc.,
den allmänna syntaxen för kommandot Sök är
find {path} {name -of-file or dir-to-search} {action-to-take}
var,
i den här handledningen kommer vi att förklara hur du hittar filer och kataloger som matchar angivna mönster. Vi kommer också att se hur du utför åtgärder på de filer eller kataloger som find-kommandot lokaliserar. Guiden är baserad på Ubuntu men är tillämplig på de flesta Linux-distributioner och versioner.
hitta filer och kataloger
hitta specifika filer med namn eller tillägg
för att leta efter en specifik fil, kör följande kommando från roten ( / )., Kommandot innehåller det exakta namnet för filen du söker efter.
find . -name file22.txt
utgång
./test/file22.txt./sales/file22.txt
Observera att resultaten inkluderar sökvägen. Detta är viktigt om du inte känner till katalogen där filen finns, eller när den är på mer än ett ställe.
Du kan också söka efter filen i en annan katalog medan du fortfarande befinner dig på den aktuella platsen. I det här fallet måste du ange sökvägen till katalogen där du vill söka.,
find ./test -name file22.txt
Letar efter specifika filer i en annan katalog
i vårt fall kommer vi att leta efter alla som börjar med brevfilen i testkatalogen.
find ./test -name file*
utgång
./test/file22.txt./test/file30.doc./test/file1.txt./test/file5,doc
Sök efter filer genom förlängning
för att hitta en fil i Linux med en viss förlängning, Lägg till den i kommandot.,
find . -name *.txt
utgång
./test/subtest/subfil.txt./test/file22.txt./test/file1.txt./home1/files32.txt./home2/file22.txt./qa/tags.txt
hitta filer och kataloger med namn
använd kommandot nedan för att leta efter filer och kataloger som börjar med bokstävernaqa
. I vår dator har vi filerna qatree.txt
och qa.txt
samt en katalog med namnet qa
.,
om vi kör kommandot;
find ./ -name "qa*"
returnerar följande utdata
./test/qatree.pdf./test/qa.txt./home/qa
kommandot returnerar både filer och kataloger som matchar sökkriterierna. För att bara hitta filer eller kataloger måste du ange detta i kommandot.
hitta endast filer eller kataloger
användtype f
– växeln endast för filer.
endast filer
find ./ -type f -name "qa*"
utdata
./test/qatree.pdf./test/qa.txt
endast kataloger
Lägg till alternativettype d
för att bara hitta kataloger.,
find ./ -type d -name "qa*"
Output
./home/qa
Case okänslig find command
alla sökningar med-name
switch är skiftlägeskänsliga och ger inte resultat med versaler. För att få alla kundcase, använd alternativet-iname
.
find ./ -iname "qa*"
utgång
./test/qatree.pdf./test/qa.txt./test/QAtest.txt./home/qa
Sök efter en fil från flera kataloger
för att hitta filerna i olika kataloger, Lägg till deras sökvägar i kommandot., I vårt fall kommer vi att checka intest
ochnumeric
kataloger.
find ./test ./numeric -name file22.txt -type f
utgång
./test/file22.txt/root/numeric/file22.txt
hitta flera filer med olika tillägg från alla kataloger
Du kan använda kommandot Sök för att hitta flera filer som delar de olika tilläggen som *.doc
, *.txt
, etc. Detta kan göras separat, en förlängning i taget, eller med bara ett kommando som innehåller alla önskade tillägg.,
find . -type f ( -name "*.txt" -o -name "*.pdf" -o -name "*.doc" )
utgång
hitta filer som innehåller viss text
Ibland vill du komma åt en fil som innehåller viss text men kan inte återkalla dess filnamn eller plats. Med det här kommandot kan du hitta alla filer som innehåller din måltext.
för att leta efter alla filer som innehåller ordet hyperconvergence”, använd;
find / -type f -exec grep -l -i "hyperconvergence" {} ;
utgång
/root/numeric/hci/root/HCIP
alternativet –i gör det möjligt för kommandot att ignorera kundcase och hittar texten om den aktiveras eller inte, dvs hyperconvergence , Hyperconvergence, etc.,
för att leta efter filerna i en viss katalog, Lägg till den helt enkelt till kommandot
find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;
utgång
./numeric/hci
hitta filer och kataloger baserat på storlek
Du kan hitta alla filer eller kataloger som är mindre, lika med eller större än en viss storlek, inom ett visst område eller tomt. Använd lämpligt format beroende på vilken typ av filer eller kataloger du söker efter.,nd – filer av en viss storlek-lika med 30MB
För att söka efter alla 30MB-filer
find / -size 30M
hitta filer större än en viss storlek
find -size +2M
utgång
. /Downloads/ubuntu18043.iso ./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c
hitta filer Mindre än 10MB i den aktuella katalogen
find . -type f -size -10M
hitta filer med storlekar mellan 100-200MB
När du letar efter filer inom ett visst område som mellan 100 och 200 MB
find / -size +100M -size -200M
leta efter kataloger större än 20kb
find / -type d -size +20k
hitta tomma filer och kataloger.,
filer
find ./ -type f -size 0
eller
find ./ -type f –empty
kataloger
find ./ -type d –empty
hitta filer efter ålder eller modifieringstid
hitta filer äldre än n dagar
find /path/ -type f -name '*.txt' -mtime +8
-mtime +8
kommer att leta efter txt
filer som är äldre än 8 dagar.,
efter ändringsdatum
detta kommer att leta efter filer som ändrats under de senaste 17 timmarna
find . -mtime -17 -type f
Letar efter kataloger som ändrats under de senaste 10 dagarna
find . -mtime -10 -type d
hitta filer baserat på åtkomst eller modifiering
hitta filer baserat på datum eller tid som nås. Detta gör att du kan se filer som har eller inte har nåtts inom en viss period.
för att se filer som inte har nåtts under de senaste 10 dagarna i hemkatalogen.,
find /home -atime +10
filer nås exakt 10 dagar sedan
find /home -atime 10
nås inom de senaste 10 dagarna
find /home -atime -10
hitta filer som ändrats under de senaste n dagarna
Du kan också leta efter filerna i/home
katalog modifierad inom de senaste 10 dagarna med kommandot;
find /home -mtime -10
hitta filer modifierade inom en viss period.
till exempel alla filer som ändrats mellan 6 och 15 dagar sedan i hemkatalogen.,
find /home -type f -mtime +6 -mtime -15
filer och kataloger nås inom de senaste 10 minuterna
för att hitta filerna nås inom de senaste 10 minuterna, använd-amin alternativet.
find . -amin -10 -type f
utgång
./.bash_history./.profileroot@ubuntu1804:~#
kataloger nås inom de senaste 10 minuterna
find . -amin -10 -type d
hitta filer som matchar specifika behörigheter
Syntax
$ find -perm mode
var läget är behörigheten vilket är antingen numeriskt som644, 655, 700, 777
, etc, eller bokstäver somu=x, a=r+x,
etc.,
Du kan ange läget på följande tre olika sätt.
- utan prefix när du vill hitta filer med exakt angivna behörigheter.
- med ”
-
” för filer med minst angiven behörighet. Detta returnerar filer med angivna samt ytterligare högre behörigheter. - med ”
/
” måste du ange ägaren eller gruppen med behörigheten till filen.,
hitta filer med tillstånd 777
find -perm 777
utgång
./file1
hitta filer med minst766
sök-perm -766
utgång
./file2./file1
kommandot söker efter alla filer där
- filägaren har läs – /skriv – /körbehörigheter.
- gruppen har läs – / skrivbehörigheter
- andra har läs – /skrivbehörighet
som sådan returnerar den två filer som uppfyller detta kriterium-file1 och file2., Filerna behöver inte ha de exakta 766
behörigheterna och kan ha ytterligare sådana så länge men måste ha åtminstone den angivna.
hitta filer skrivbara av ägaren
Vi kommer nu att använda ”/
” för att leta efter filer skrivbara av antingen deras ägare eller grupp eller andra.
find -perm /222../file2./file3./file1
ovanstående söker efter filer som är skrivbara av antingen deras ägare eller grupp.
detta returnerar filer som är skrivbara av antingen men inte nödvändigtvis båda. För att se filer, där båda har skrivbara behörigheter, använd-prefixet.,
./file2./file1
hitta filer som ägs av en användare
hitta alla filer som ägs av Jack
find /home -user jack
utgång
/home/jack/home/jack/examples.desktop/home/jack/.gnupg/home/jack/.gnupg/private-keys-v1.d/home/jack/ans.cgi
hitta specifika filer som ägs av en användare
hitta alla textfiler som ägs av Jack
find /home -user jack -iname "*.txt"
utgång
/home/jack/docs/file32.txt
hitta och lista filer och kataloger tillsammans med deras behörigheter
find -name "*.conf" | ls -l
utgång
hitta och agera på resultaten
i det här avsnittet kommer vi att titta på hur du kan agera på de filer som matchar mönstret som anges i sökkommandot.,
hitta filer och ändra behörigheter
Sök och ändra behörigheter för vissa filtyper. I vårt fall kommer vi att arbeta med PHP-filer med olika behörigheter som visas nedan.,
Vi kommer nu att leta efter alla PHP-filer (ovan) och ersätta deras behörigheter med 755
find ver -name "*.php" -type f -exec chmod 755 {} ;
kommandot letar efter PHP-filer i katalogenver
och anger sedan deras tillstånd till755
(rwxr-xr-x
)
resultat
hitta och ändra fil-och katalogbehörigheter
hitta filer med 644 behörigheter och ändra dem till att ha 655 behörigheter
find . -type f -perm 644 -exec chmod 655 {} ;
Du kan också leta efter kataloger med 644 behörigheter och ersätta det med 755.,
find . -type d -perm 644
utgång
./docs
docs-mappen har 644 behörigheter
drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs
för att ställa in den på 755
, kör vi
find . -type d -perm 644 -exec chmod 755 {} ;
Nu kan vi kontrollera igen för att se exakt vad 755
find . -type d -perm 755
utgång
.
./ docs
från ovan kan vi se Rot-och dokumentkataloger har 755 behörigheter.,
Ls –la
kommandot ger följande detaljer
drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs
hitta och kopiera filer eller kataloger
hitta och kopiera en specifik fil till en katalog
kommandot nedan hittarfile22.tx
t-filen och kopiera den till~/tmp/images
katalog.,
find -iname file22.txt -exec cp {} ~/tmp/images ;
hitta och kopiera en typ av filer till en katalog
för att hitta filer som bilder medjpg
förlängning i den aktuella katalogen och kopiera dem till en annan plats som en bildmapp, använd;
find -iname '*.jpg' -exec cp {} ~/tmp/images ;
detta kommer att hitta och kopiera alla jpg-filer till~/tmp/images
mapp.
hitta och kopiera en fil till många kataloger
hitta och kopiera en enda till flera kataloger.,
find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;
det här hittar filen hci-filen och kopierar den till de tre katalogerna i/tmp/dir1/ /tmp/dir2/
och$HOME/3/
hitta och flytta filer till en annan katalog
för att flytta en känd fil från en katalog till en annan., För att flytta filen universal.php
;
find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;
Sök och flytta filer med ett visst tillägg till en annan mapp
find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;
hitta vissa filer och flytta till en viss annan mapp
find -type f -name uni*.* -exec mv {} ~/unifiles/ ;
kommandot söker efter alla filer med namn som börjar med uni
och som har någon förlängning. Det flyttar sedan dem till katalogen/unifiles/
hitta och flytta filer baserat på ålder
hitta och flytta filer äldre än angivna dagar till en annan plats som arkivet.,
find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;
detta kommer att leta efter pdf-filer äldre än 20 dagar och flytta dem till backup1-katalogen.,filer och kataloger
syntaxen för att hitta och ta bort filer eller kataloger i den aktuella katalogen är
find . -type f -name "file to delete" -exec rm -f {} ;
för att bara ta bort filer eller
find . -type d -name "dir-to-delete" -exec rm -rf {} ;
för att bara ta bort kataloger
hitta och ta bort endast specifika filer
för att hitta och ta bort filer som börjar med til, använd;
find . -type f -name "til*" -exec rm {} ;
för att hitta och ta bort kataloger som börjar med til
find . -type d -name "til*" -exec rm {} ;
ta bort både filer och kataloger
find . -name "til*" -exec rm -rf {} ;
detta tar bort både filer och kataloger som börjar med bokstäverna til.,
Delete by extension
nedan är hur du kan hitta och ta bort allatxt
filer i den aktuella katalogen. Ersätttxt
med ett annat tillägg sombak
,pdf
eller något annat som du vill ta bort.
find . -type f -name "*.txt" -exec rm -f {} ;
om du vill att systemet ska uppmana dig att bekräfta innan du tar bort varje fil, Lägg till-i-alternativet enligt nedan.,
find . -type f -name "*.txt" -exec rm -i {} ;
utgång
som standard tar-rm
inte bort katalogerna och du måste använda alternativet–r
för att säkerställa en rekursiv borttagning. Detta säkerställer radering av tomma kataloger och de som innehåller filer. Alternativet-f
tvingar borttagningen och används för både filer och kataloger.
hitta och ta bort filer som är äldre än n dagar
hitta och ta bort säkerhetskopior som är äldre än 20 dagar från den aktuella katalogen.,
find . -type f -name '*.bak' -mtime +20 -exec rm {} ;
detta tar bort alla.bak
filer som är äldre än 20 dagar.
hitta och ta bort kataloger endast
för att ta bort en katalog som heterdir22
find . -type d -name dir22 -exec rm -rf {} ;
se till att du matchar katalognamnet fallet eller använda alternativet-iname
.
find . -type d -iname Dir22 -exec rm -rf {} ;
tar bort bådeDir22
ochdir22
för att bekräfta innan du raderar, använd-i-alternativet.
find . -type d -iname Dir22 -exec rm -rf -i {} ;
utgång
rm: remove directory ’./Dir22’?, n
rm: ta bort katalog’./dir22′? y
i vårt fall skrev vi n
för katalogen Dir22
som inte kommer att raderas och y
för dir22
som nu kommer att tas bort.
hitta och ta bort tomma filer
Du kan använda något av följande kommandon för att hitta tomma filer och ta bort dem automatiskt.
find ./ -type f -size 0 -exec rm -f {} ;
eller
sök ./ – typ f-storlek 0 / xargs rm-f
eller
Hitta.,/- type f –size 0-delete
hitta och ta bort tomma kataloger
för att ta bort tomma kataloger använder vi alternativet d
.
find ./ -type d -empty -exec rmdir {} ;
ett annat alternativ är att använda delete istället för remove.
find ./ -type d -empty -delete
Observera att borttagning av system eller kritiska filer från datorn kan skada operativsystemet eller programmen eller leda till förlust av viktiga data.
för att undvika oavsiktliga raderingar är det bästa sättet att använda ett användarkonto som inte är root., Se också till att du tar bort rätt filer som inte är användbara och att du har en säkerhetskopia av alla dina datafiler ifall.
vad händer härnäst?
fortsätt och prova ovanstående Linux find-kommandon i din lab-eller icke-produktionsmiljö. Se om du kan använda några för att automatisera filsystemet rensning med Crontab. Och, för att behärska Linux, kolla in denna online-kurs.