find(1)

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

NAMN

find - sök efter filer i en kataloghierarki

SYNOPSIS

find [-H] [-L] [-P] [-D debugalternativ] [-O nivå] [startpunkt...] [uttryck]

BESKRIVNING

Denna manualsida dokumenterar GNU-versionen av `find`. GNU `find` söker igenom katalogträdet med rot i varje angiven startpunkt genom att utvärdera det angivna uttrycket från vänster till höger enligt prioriteringsreglerna (se avsnitt OPERATÖRER) tills utfallet är känt (vänster sida är falsk för OCH-operationer, sann för ELLER-operationer), vid vilken punkt `find` går vidare till nästa filnamn. Om ingen startpunkt anges, används `.` som standard.

Om du använder `find` i en miljö där säkerhet är viktigt (t.ex. om du söker i kataloger som kan skrivas av andra användare), bör du läsa kapitlet "Säkerhetsöverväganden" i dokumentationen för `findutils`, som heter *Finding Files* och ingår i `findutils`. Det dokumentet innehåller också mer detaljer och diskussion än denna manualsida.

ALTERNATIV

De alternativ som börjar med `-H`, `-L` och `-P` styr hur symboliska länkar behandlas. Argument på kommandoraden efter dessa tolkas som namn på filer eller kataloger som ska undersökas, fram till det första argumentet som börjar med `-`, eller argumentet `(` eller `!`. Det argumentet och alla efterföljande argument tolkas som det uttryck som beskriver vad som ska sökas. Om inga sökvägar anges används den aktuella katalogen. Om inget uttryck anges, används standarduttrycket `-print` (men du bör överväga att använda `-print0` istället).

Denna manualsida talar om "alternativ" inom uttryckslistan. Dessa alternativ styr `find`:s beteende men anges omedelbart efter den sista sökvägen. De fem "verkliga" alternativen `-H`, `-L`, `-P`, `-D` och `-O` måste om de används förekomma innan den första sökvägen anges. En dubbelbindestreck `--` kan teoretiskt användas för att signalera att alla återstående argument inte är alternativ, men detta fungerar egentligen inte på grund av hur `find` bestämmer slutet på de efterföljande sökvägsargumenten.

Om en sökväg till exempel börjar med `-` kan `find` tolka det som ett uttrycksargument. För att säkerställa att alla startpunkter behandlas som sådana, och särskilt för att förhindra att jokertecken som expanderas av skalet misstolkas som uttrycksargument, är det generellt säkrare att inleda sådana sökvägar med `./` eller använda absoluta sökvägar som börjar med `/`.

Alternativ för symboliska länkar

`-P` - Följ aldrig symboliska länkar (standard).

`-L` - Följ symboliska länkar.

`-H` - Följ symboliska länkar endast för filer angivna på kommandoraden.

Övriga alternativ

`-D debugalternativ` - Visa diagnostisk information. `-O nivå` - Aktivera frågeoptimering.

UTTRYCK

Den del av kommandoraden efter startpunkterna kallas "uttryck" och består av:

  • Tester - Returnerar sant eller falskt baserat på filens egenskaper.
  • Åtgärder - Har sidoeffekter (t.ex. att skriva ut filnamn).
  • Globala alternativ - Påverkar tester och åtgärder över hela uttrycket.
  • Positiva alternativ - Påverkar endast efterföljande tester/åtgärder.
  • Operatörer - Binder samman olika delar av uttrycket.

Om inget uttryck anges används `-print` som standard.

Exempel på uttryck

`-name "filnamn"` - Sök efter filer med angivet namn. `-type f` - Sök endast efter vanliga filer. `-size +1M` - Sök efter filer större än 1 MB. `-exec kommando {} \;` - Kör ett kommando för varje matchad fil.

EXEMPEL

Hitta alla filer i `/tmp` som heter `core` och ta bort dem: ```bash find /tmp -name core -type f -print | xargs rm -f ```

  • Säkrare variant med `-print0` och `xargs -0`:

find /tmp -name core -type f -print0 | xargs -0 rm -f`

  • Hitta alla filer ändrade senaste 24 timmarna i hemkatalogen:

find $HOME -mtime 0

  • Hitta och kör `file` på alla filer i den aktuella katalogen:

find . -type f -exec file {} \;

AVSLUTNINGSSTATUS

`find` returnerar `0` om alla filer behandlas korrekt, och ett värde större än `0` om fel uppstår.

SE OCKSÅ

KÄLLOR

Fler exempel på användning av find-kommandot

1. Hitta alla filer med ett visst namn

find /path/to/search -name "filnamn.txt" Detta kommando söker efter alla filer med namnet "filnamn.txt" i den angivna katalogen och dess undermappar.

2. Hitta alla filer av en viss typ

find /path/to/search -type f Söker efter alla vanliga filer (`-type f`) i den angivna katalogen.

3. Hitta alla kataloger i en sökväg

find /path/to/search -type d Söker efter alla kataloger (`-type d`) i den angivna katalogen och dess undermappar.

4. Hitta filer större än 100 MB

find /path/to/search -type f -size +100M Hittar alla filer som är större än 100 MB (`+100M`).

5. Hitta och ta bort alla .log-filer äldre än 7 dagar

find /var/log -name "*.log" -type f -mtime +7 -exec rm {} \; Hittar alla `.log`-filer i `/var/log` som är äldre än 7 dagar och tar bort dem.

6. Hitta filer och ändra deras behörigheter

find /path/to/search -type f -name "*.sh" -exec chmod +x {} \; Gör alla `.sh`-filer körbara genom att ändra deras behörigheter.

7. Hitta alla symboliska länkar

find /path/to/search -type l Söker efter alla symboliska länkar (`-type l`) i den angivna katalogen.

8. Hitta och kopiera alla bilder till en annan katalog

find /path/to/search -type f \( -name "*.jpg" -o -name "*.png" \) -exec cp {} /destination/path \; Hittar alla `.jpg`- och `.png`-filer och kopierar dem till `/destination/path`.

9. Hitta tomma filer

find /path/to/search -type f -empty Hittar alla tomma filer (`-empty`).

10. Hitta och lista alla filer som modifierades senaste 24 timmarna

find /path/to/search -type f -mtime -1 Hittar alla filer som ändrats inom de senaste 24 timmarna (`-mtime -1`).

Sidslut

Orginalhemsidan på Engelska :https://man7.org/linux/man-pages/man1/find.1.html


Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webbhotell.