find
är ett kommando för rekursivt filtrering av objekt i filsystemet baserat på en enkel villkorlig mekanism. Användfind
för att söka efter en fil eller katalog i filsystemet. Med flaggan-exec
kan filer hittas och omedelbartbearbetas inom samma kommando.,
Find Linux Files by Name or Extension
Use find
from the command line to locate a specific file by name or extension., Följande exempel söker efter *.err
filer i katalogen /home/username/
och alla underkataloger:
find /home/username/ -name "*.err"
Du bör se en liknande utmatning i konsolen:
/home/username/example.errThe matching file in the /home/username/ directory is "example.err"
Common Linux Find common Commons and Syntax
följande exempel söker efter *.err
filer i katalogen/home/username/
find
kommandot tar vanligtvis följande form:
find options starting/path expression
- attributet
options
styr beteende-och optimeringsmetoden förfind
– processen., - attributet
starting/path
definierar toppnivåkatalogen därfind
börjar filtrera. - attributet
expression
styr de tester som söker i kataloghierarkin för att producera utdata.
hitta en fil i Linux med filnamnet
för att hitta en fil med filnamnet, använd syntaxenfind -name filename
. Utelämna sökvägen söker efter filen över hela disken., Du kan till exempel hitta en fil med namnet example.err
som finns i katalogen /home/username
med följande kommando:
find -name example.err
Du bör se en liknande utmatning:
./username/example.err
hitta en fil i din nuvarande katalog med hjälp av kommandot Sök
ta en titt på exemplet katalogstruktur och filer. De hänvisas till i hela denna guides exempel.,vill du hitta filen example.err
i katalogen eller någon av dess underkataloger kan du utfärda följande kommando:
find . -name example.err
din utmatning liknar följande:
./example.err./directory_1/example.err
utmatningen återspeglar directory_1
katalogstruktur:
./example.err./directory_1/example.err
utmatningen återspeglardirectory_1
katalogstruktur:
hitta bildfiler i Linux med kommandoraden
referera till filstrukturen i föregående avsnitt, det finns en bild som heter image01.png
som ligger vid roten (/
) s i katalogstrukturen.,
för att hitta filenimage01.png
, kör följandefind
kommando som lokaliserar alla.png
filer som lagras i katalogen/
.
find -name *.png
Du bör se en liknande utgång:
./image01.png
ändra bildfiltyp och leta efter alla .jpg
filer i rotkatalogen (/
):
find -name *.jpg
find -name *.jpg
utgången liknar exemplet., Se exempelkatalogen i föregående avsnitt för att visa filens plats.
./web_files/unnamed.jpg
hitta en tom fil i katalogen med kommandoraden
för att hitta en tom fil i katalogen med kommandoraden, skriv följande kommando:
find . -type f -empty
om Ingen utmatning returneras finns det ingen tom fil i den aktuella katalogen.
alternativ och optimeringar för att hitta filer i Linux med kommandoraden
standardkonfigurationen förfind
ignoressymbolic länkar., Om du vill att find
ska följa och returnera symboliska länkar, Lägg till alternativet -L
till kommandot, som visas nedan:
find -O3 -L /var/www/ -name "*.html"
det här kommandot möjliggör maximal optimeringsnivå (-O3
) och tillåter find
för att följa symboliska länkar (-L
). find
söker igenom hela katalogträdet under/var/www/
för filer som slutar med.html
.,
find
optimerar filtreringsstrategin för att öka prestandan. Tre användarvalbara optimeringsnivåer anges som -O1
, -O2
och -O3
. Den-O1
optimering är standard och tvingarfind
att filtrera baserat på filnamn innan du kör alla andra tester.,
optimering på-O2
nivå prioriterar filename filter, som i-O1
, och kör sedan alla filtyp filtrering innan du fortsätter med andra mer resurskrävande förhållanden. Nivå -O3
optimering tillåter find
att utföra den allvarligaste optimering och inordnar alla tester baserat på deras relativa bekostnad och sannolikheten för deras framgång.,
Command | Description | ||
---|---|---|---|
-O1 |
Filter based on filename first (default). | ||
-O2 |
File name first, then file-type., | ||
-O3 |
Tillåtfind att automatiskt beställa sökningen baserat på effektiv användning av resurser och sannolikhet. tr> |
-maxdepth X
|
Sök aktuell katalog samt alla underkataloger X nivåer djupt. |
-iname |
Sök utan hänsyn till textfall., | ||
-not |
Return only results that do not match the test case. | ||
-type f |
Search for files. | ||
-type d |
Search for directories., |
hitta filer i Linux genom att ändra tiden med kommandoraden
kommandotfind
kan filtrera en kataloghierarki baserat på när en fil senast ändrades., Till exempel hittar följande kommando en fil med .err
– tillägget som har ändrats under de senaste 7 dagarna:
find / -name "*err" -mtime -7
kommandot exempel returnerar följande utmatning:
använd Grep för att hitta filer i Linux med kommandoraden
kommandot find
kan bara filtrera kataloghierarkin baserat på en fils namn och metadata. Om du behöver söka baserat på innehållet i filen, använd ett verktyg somgrep., Tänk på följande exempel:
find . -type f -exec grep "test" '{}' \; -print
det här kommandot söker efter varje objekt i den aktuella kataloghierarkin (.
) som är en fil (-type f
) och kör sedan kommandotgrep "test"
för varje fil som uppfyller villkoren. Filerna som matchar skrivs ut på skärmen (-print
). De lockiga hängslen ({}
) är en platshållare för sökmatchningsresultaten., {}
är inneslutna i enstaka citat ('
) för att undvika att lämna grep
ett felaktigt filnamn. Kommandot-exec
avslutas med ett semikolon (;
), vilket bör undvikas (\;
) för att undvika tolkning av skalet.
filen som används i exemplet (example.err
) har text inuti den som säger ”test”., När du kör kommandot exempel ser du en liknande utmatning:
Grep identifierade varje fil i den aktuella arbetskatalogen som innehåller strängen ”test”.,
notera
innan kommandot
find
implementerar alternativet-exec
kan du skapa en liknande utmatning till exemplet ovan med kommandotxargs
:find . -type f -print | xargs grep "test"
bearbeta och hitta filer med kommandot Sök i Linux
alternativet-exec
körs kommandon mot varje objekt som matchar uttrycketfind
., Tänk på följande exempel:
find . -name "example.err" -exec chmod o+r '{}' \;
detta filtrerar varje objekt i den aktuella hierarkin (.
) för filer som heterrc.conf
och kör kommandotchmod o+r
för att ändra filbehörigheterna för kommandotfind
.
exempelkommandot körs och körs-exec
– alternativet i rotkatalogen ifind
– processen. Använd-execdir
för att utföra det angivna kommandot i katalogen där matchen finns., Detta kan minska säkerhetsproblemen och ge bättre prestanda för vissa verksamheter.
alternativen-exec
eller-execdir
körs utan ytterligare uppmaningar. Om du föredrar att bli ombedd innan åtgärder vidtas, ersätt -exec
med -ok
eller -execdir
med -okdir
.
hur man hittar och tar bort filer med kommandoraden Linux
Varning
använd det här alternativet med stor försiktighet.,
Lägg till alternativet-delete
till slutet av ett matchande uttryck för att radera alla filer som matchar. Använd det här alternativet när du är säker på att resultaten bara matchar de filer som du vill ta bort.
i exemplet nedan hittarfind
rekursivt alla filer i hierarkin som börjar i den aktuella katalogen och tar bort alla filer som slutar med tillägget.err
:
find . -name "*.err" -delete
har fortfarande några frågor?,
gå med i vår diskussionsgrupp och skicka dina frågor till andra Linode-och Linux-entusiaster för att hjälpa dig.
relaterade frågor: