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
optionsstyr beteende-och optimeringsmetoden förfind– processen., - attributet
starting/pathdefinierar toppnivåkatalogen därfindbörjar filtrera. - attributet
expressionstyr 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_1katalogstruktur:
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
findimplementerar alternativet-execkan 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: