Hitta

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 23 januari 2020; kontroller kräver 7 redigeringar .

find - ett verktyg för att söka efter filer efter namn och andra egenskaper, som används i UNIX- liknande operativsystem . Kan söka i en eller flera kataloger med hjälp av kriterier som anges av användaren . findReturnerar alla filer i arbetskatalogen som standard . Dessutom findtillåter det användaren att tillämpa vissa åtgärder på alla hittade filer. Reguljära uttryck stöds också . För att söka efter filer efter innehåll, använd verktyget grep .

Lista över nycklar


Exempel

Sök i den aktuella katalogen

Hitta alla filer i nuvarande och underordnade kataloger som börjar med min .

Observera: när det gäller unix är allt, inklusive kataloger, en fil .

hitta. -namn 'min*'

För att endast söka efter filnamn måste du använda ett extra alternativ-type f 

hitta. -namn 'min*' -typ f

Sök i en specifik katalog

Hitta alla filer i rot- och underkatalogerna som börjar med min .

Att söka i rotkatalogen motsvarar att söka på hela datorn.

hitta / -namn 'min*'

Söker efter filer i kataloger /usr/local/manoch/opt/local/man

hitta /usr/local/man /opt/local/man -namn 'my*'

Söker efter flera filnamn

Hitta alla filer i nuvarande och underordnade kataloger som börjar med my eller qu .

Observera att som standard är alla argument kopplade med hjälp av logiska och (alternativet -a, från engelska  och ). Om du behöver kombinera flera argument med en logisk eller  - använd alternativet -o, från engelska.  eller .

hitta. \( -namn "min*" -o -namn "qu*" \) -skriv ut

Sök efter flera filtyper med reguljära uttryck

Hitta alla filer i den aktuella och underordnade katalogen vars tillägg matchar de listade.

Denna sökning utförs med hjälp av reguljära uttryck .

hitta. -typ f -regex ".*\.\(jpg\|jpeg\|gif\|png\|JPG\|JPEG\|GIF\|PNG\)"

Det föregående exemplet kan också skrivas med reguljära uttryck

hitta. -typ f -regex "\(my\|qu\).*"

Kommandokörning

Alternativet -exec kör kommandot som följer det och ersätter {}den aktuella filen. Hitta alla kataloger under den angivna katalogen och ändra deras behörigheter med kommandot chmod :

hitta /sökväg -typ d -exec chmod 0755 {} \;

Alternativet -exec är cirka 10 gånger långsammare än att omdirigera utdata via xargs , så det rekommenderas att skriva den här koden så här:

hitta /sökväg -typ d | xargs chmod 0755

Kataloger med namn som innehåller mellanslag kommer dock inte att behandlas med xargs-omdirigeringsmetoden, så du bör använda det första alternativet, vadderat:

hitta /sökväg -typ d -exec chmod 0755 "{}" \;

Eller använd alternativet -print0och -0låter dig bearbeta argument som innehåller mellanslag och citattecken:

hitta /sökväg -typ d -print0 | xargs -0 chmod 0755

Sök efter alla php.ini-filer i den aktuella katalogen och ersätt texten i varje hittad fil med kommandot sed .

hitta. -name 'php.ini' -exec sed -i 's/log_errors = Av/log_errors = På/g' "{}" \;

Komplex sökning i flera typer av filer och textersättningar i var och en av dem, från den aktuella katalogen och nedan.

hitta. -regex ".*\.\(php\|js\|css\)" -exec sed -i 's/\/bitrix\/templates\//\/local\/templates\//g' "{} " \;

Sök baserat på skapelsetid

Hitta och lista filer i hela filsystemet som har ändrats under den senaste minuten:

hitta / -mmin -1 -print

Hitta och lista filer i hela filsystemet som har ändrats för mer än 31 dagar sedan:

hitta / -mtime +31 -print

Sök efter filstorlek

Hitta och lista filer i hela filsystemet vars storlek är större än 100 MB:

hitta / -storlek +100M -print

Hitta filer som ägs av en specifik användare

I det här exemplet utförs sökningen på filer som ägs av en användare som heter ilya

hitta. -användare ilya

Söka efter filer med en djupgräns

Sökdjupet är relativt katalogen som anges i kommandoargumentet.

Börjar söka i mappen /var/www, men inte djupare /var/www/*/*/*/*.

hitta /var/www -maxdepth 4 -namn 'restore.php'

Sök efter filer genom att lista kataloger.

Söker efter filer i de angivna katalogerna.

hitta /var/spool/postfix/ { deferred,active,maildrop,incoming } / -typ f

Sök efter filer med mask med ett undantag.

Letar efter php-filer i den aktuella katalogen, exklusive index.php

hitta. -namn "*.php"  ! -namn "index.php"

Ta bort en fil rekursivt från den aktuella katalogen till ett givet djup.

Tar bort alla filer restore.phpfrån den aktuella katalogen upp till 4 kapslingsnivåer i förhållande till kommandoradsargumentet

Börjar söka i mapp /var/www, men inte djupare /var/www/*/*/*/*och tar bort alla restore.phphittade filer.

hitta /var/www -maxdepth 4 -name 'restore.php' -exec rm -r {} \;

Ignorerar fel

Om ett fel uppstår under sökningen (det finns till exempel ingen läsbehörighet från katalogen), blir kommandots utdata mindre informativt. Omdirigera STDERR-utdata till /dev/null .

hitta / -namn 'secret.keys' -print 2 >/dev/null

Du kan också använda något av följande alternativ:

hitta / -namn "namn på fil att söka" |& grep -v 'Permission denied' hitta / -namn "namnet på filen du letar efter" |& grep -v 'Permission denied'

Länkar