Android

Hur man hittar filer i Linux med hjälp av kommandoraden

Hur du krypterar filer och mappar med 7-Zip

Hur du krypterar filer och mappar med 7-Zip

Innehållsförteckning:

Anonim

Sökkommandot är ett av de mest kraftfulla verktygen i Linux-systemadministratörsarsenalen. Den söker efter filer och kataloger i en kataloghierarki baserat på ett användaruttryck och kan utföra användarspecificerad åtgärd på varje matchad fil.

Du kan använda sökkommandot för att söka efter filer och kataloger baserat på deras behörigheter, typ, datum, äganderätt, storlek och mer. Det kan också användas i kombination med andra verktyg som grep eller sed .

Linux find kommandosyntax

Den allmänna syntaxen för sökkommandot är följande:

find

  • options styr behandlingen av symboliska länkar, felsökningsalternativ och optimeringsmetod. Attributet path… definierar startkatalogen eller katalogerna där sökning kommer att söka i filerna. Uttrycksattributet består av alternativ, sökmönster och åtgärder separerade av operatörer.

För att söka efter filer i en katalog måste användaren anropa sökkommandot ha läsbehörigheter i den katalogen.

Låt oss ta en titt på följande exempel:

find -L /var/www -name "*.js"

  • Alternativet -L (alternativ) berättar att sökkommandot ska följa symboliska länkar. /var/www (sökväg…) anger katalogen som ska sökas. (Uttrycket) -name "*.js berättar om -name "*.js slutar med .js (JavaScript-filer).

Hitta filer efter namn

Att hitta filer med namn är förmodligen den vanligaste användningen av sökkommandot. För att hitta en fil med -name följde alternativet -name namnet på filen du söker efter.

För att söka efter en fil med namnet document.pdf i /home/linuxize skulle du använda följande kommando:

find /home/linuxize -type f -name document.pdf

-name alternativet -iname med -iname att köra en -name -iname

find /home/linuxize -type f -iname document.pdf

Kommandot ovan kommer att matcha "Document.pdf", "DOCUMENT.pdf"..etc.

Hitta filer efter tillägg

Att söka efter filer efter anknytning är detsamma som att söka efter filer efter namn. Till exempel för att hitta alla filer som slutar med .log.gz i .log.gz /var/log/nginx du använda:

find /var/log/nginx -type f -name '*.log.gz'

Det är viktigt att nämna att när du använder jokertecken måste du antingen citera mönstret eller undvika asterisk * -symbolen med backslash \ så att det inte tolkas av skalet.

För att hitta alla filer som inte matchar regex *.log.gz du använda alternativet -not . Till exempel för att hitta alla filer som inte slutar i *.log.gz skulle du använda:

find /var/log/nginx -type f -not -name '*.log.gz'

Hitta filer efter typ

Ibland kan du behöva söka efter specifika filtyper som vanliga filer, kataloger eller symlänkar. I Linux är allt en fil.

För att söka efter filer baserat på deras typ, använd alternativet -type och en av följande beskrivare för att ange filtyp:

  • f : en vanlig fil d : katalog l : symbolisk länk c : teckenanordningar b : blockenheter p : heter pipe (FIFO) s : socket

Till exempel, för att hitta alla kataloger i den aktuella arbetskatalogen, skulle du använda:

find. -type d

Det vanliga exemplet skulle vara att rekursivt ändra behörigheterna för webbplatsfil till 644 och katalogbehörigheter till 755 med chmod kommandot:

find /var/www/my_website -type d -exec chmod 0755 {} ; find /var/www/my_website -type f -exec chmod 0644 {} ;

Hitta filer efter storlek

För att hitta filer baserade på filstorleken, passera -size tillsammans med storlekskriterierna. Du kan använda följande suffix för att ange filstorlek:

  • b : 512-byte-block (standard) c : byte w : två-byte-ord k : Kilobytes M : Megabyte G : Gigabyte

Följande kommando hittar alla filer med exakt 1024 byte i katalogen /tmp :

find /tmp -type f -size 1024c

Sökkommandot låter dig också söka efter filer som är större eller mindre än en specificerad storlek.

I följande exempel söker vi efter alla filer som är mindre än 1 1MB i den aktuella arbetskatalogen. Lägg märke till minus - symbolen före storleksvärdet:

find. -type f -size -1M

find. -type f -size +1M

Du kan till och med söka efter filer inom ett storleksintervall. Följande kommando hittar alla filer mellan 1 och 2 2MB :

find. -type f -size +1M -size 21M

Hitta filer efter modifieringsdatum

Sökkommandot kan också söka efter filer baserat på deras senaste ändring, åtkomst eller ändringstid.

Samma som när du söker efter storlek, använd plus- och minus-symbolerna för "större än" eller "mindre än".

Låt oss säga att du för några dagar sedan ändrade en av dovecot-konfigurationsfilerna, men du har glömt vilken. Du kan enkelt filtrera alla filer under /etc/dovecot/conf.d som slutar med .conf och har ändrats under de senaste fem dagarna med:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

Här är ett annat exempel på att filtrera filer baserat på modifieringsdatumet med alternativet -daystart . Kommandot nedan visar alla filer i /home hemkatalogen som ändrades för 30 eller fler dagar sedan:

find /home -mtime +30 -daystart

Hitta filer efter behörigheter

-perm låter dig söka efter filer baserat på filtillstånd.

Till exempel, för att hitta alla filer med behörigheter på exakt 775 katalogen /var/www/html , skulle du använda:

find /var/www/html -perm 644

Du kan prefixera det numeriska läget med minus - eller snedstreck / .

När snedstreck / används som prefix måste minst en kategori (användare, grupp eller andra) ha åtminstone respektive bitar inställda för att en fil ska matcha.

Tänk på följande exempelkommando:

find. -perm /444

Ovanstående kommando kommer att matcha alla filer med läsbehörigheter som ställts in för antingen användare, grupp eller andra.

Om minus - används som prefix måste filen anpassas till åtminstone de angivna bitarna. Följande kommando söker efter filer som har läst och skrivtillstånd för ägaren och gruppen och är läsbara av andra användare:

find. -perm -664

Hitta filer efter ägare

För att hitta filer som ägs av en viss användare eller grupp, använd -user och -group .

Till exempel, för att söka efter alla filer och kataloger som ägs av användaren linuxize , skulle du köra:

find / -user linuxize

Här är ett verkligt exempel. Låt oss säga att du vill hitta alla filer som ägs av användaren www-data och ändra äganderätten till de matchade filerna från www-data till nginx :

find / -user www-data -type f -exec chown nginx {} ;

Hitta och ta bort filer

För att radera alla matchande filer, lägg till alternativet- -delete i slutet av matchningsuttrycket.

Se till att du bara använder det här alternativet när du är säker på att resultatet stämmer med filerna som du vill ta bort. Det är alltid en bra idé att skriva ut de matchade filerna innan du använder alternativet- -delete .

Till exempel för att ta bort alla filer som slutar med .temp från /var/log/ du skulle använda:

find /var/log/ -name `*.temp` -delete Använd alternativet- -delete med stor försiktighet. -delete utvärderas som ett uttryck och om du lägger till alternativet- -delete först kommer kommandot att ta bort allt under de startpunkter du angav.

När det gäller kataloger kan find bara find bort tomma kataloger samma som rmdir .

Slutsats

Vi har visat dig hur du använder sökkommandot med olika alternativ och kriterier.

Den här artikeln bör ge dig en grundläggande förståelse för hur du hittar filer på dina Linux-system. Du kan också besöka find man-sidan och läsa om alla andra kraftfulla alternativ i find kommandot.

hitta terminal