Find: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
Rad 1: Rad 1:
== find - Sök efter filer och kataloger ==
= FIND(1) =
Kommandot `find` används för att söka efter filer och kataloger i ett filsystem baserat på olika villkor.
'''Allmänna kommandomanualer'''
'''FIND(1)'''
== NAMN ==
* find - sök efter filer i en katalogstruktur


=== Syntax ===
== SYNTAX ==
find [SÖKVÄG]... [UTTRYCK]...
* find [-H] [-L] [-P] [-D debugval] [-O nivå] [startpunkt...] [uttryck]


=== Beskrivning ===
== BESKRIVNING ==
Kommandot `find` söker efter filer i en kataloghierarki. Du kan ange olika villkor för att filtrera sökresultaten. Detta kommando är mycket kraftfullt och flexibelt, vilket gör det möjligt att utföra komplexa sökningar och åtgärder på filer och kataloger.
* Denna manual sida dokumenterar GNU-versionen av find. GNU find söker igenom katalogträdet med start från varje angiven startpunkt genom att utvärdera det givna uttrycket från vänster till höger, enligt reglerna för prioritetsordning (se avsnitt OPERATORER), tills resultatet är känt (den vänstra sidan är falsk för och-operationer, sann för eller), vid vilken punkt find går vidare till nästa filnamn. Om ingen startpunkt anges, antas '.'.
* Om du använder find i en miljö där säkerheten är viktig (till exempel om du använder den för att söka i kataloger som är skrivbara av andra användare), bör du läsa kapitlet 'Säkerhetsöverväganden' i dokumentationen för findutils, som heter Finding Files och kommer med findutils. Detta dokument innehåller också mycket mer detaljer och diskussion än denna manual, det kan vara en mer användbar informationskälla.


=== Alternativ ===
== ALTERNATIV ==
Kommandot `find` stöder många alternativ som kan användas för att justera sökningen:
* Alternativen -H, -L och -P styr behandlingen av symboliska länkar. Kommandoradsargument efter dessa tas att vara namn på filer eller kataloger som ska undersökas, upp till det första argumentet som börjar med '-', eller argumentet '(' eller '!'. Detta argument och eventuella efterföljande argument tas att vara uttrycket som beskriver vad som ska sökas efter. Om inga sökvägar anges används den aktuella katalogen. Om inget uttryck anges används uttrycket -print (men du bör troligen överväga att använda -print0 istället, hur som helst).


* `-H` - Följ symboliska länkar som specificeras på kommandoraden.
== UTTRYCK ==
* `-L` - Följ alla symboliska länkar.
* Delen av kommandoraden efter listan över startpunkter är uttrycket. Detta är en slags frågespecifikation som beskriver hur vi matchar filer och vad vi gör med de filer som matchades. Ett uttryck är sammansatt av en sekvens av saker:
* `-P` - Följ inte symboliska länkar (standardbeteende).
** Tester  Tester returnerar ett sant eller falskt värde, vanligtvis baserat på någon egenskap hos en fil vi överväger. Testet -empty till exempel är sant endast när den aktuella filen är tom.
* `-D debugopts` - Skriv ut detaljerad felsökningsinformation.
** Åtgärder Åtgärder har sido effekter (som att skriva ut något på standardutmatningen) och returnerar antingen sant eller falskt, vanligtvis baserat på om de är framgångsrika eller inte. Åtgärden -print till exempel skriver ut namnet på den aktuella filen på standardutmatningen.
* `-Olevel` - Optimera sökningen; nivå 0 (standard) till nivå 3.
** Globala alternativ Globala alternativ påverkar driften av tester och åtgärder som anges på någon del av kommandoraden. Globala alternativ returnerar alltid sant. Alternativet -depth till exempel får find att genomgå filsystemet i en djupförst ordning.
** Positionella alternativ Positionella alternativ påverkar endast tester eller åtgärder som följer dem. Positionella alternativ returnerar alltid sant. Alternativet -regextype till exempel är positionellt och specificerar det reguljära uttrycksdialekt för reguljära uttryck som förekommer senare på kommandoraden.
** Operatorer Operatorer sammankopplar de andra objekten inom uttrycket. De inkluderar till exempel -o (betyder logiskt ELLER) och -a (betyder logiskt OCH). Där en operator saknas, antas -a.


=== Uttryck ===
== SE OCKSÅ ==
`find`-kommandot använder uttryck för att definiera sökvillkor. Här är en omfattande lista över de vanligaste uttrycken:
* chmod(1), locate(1), ls(1), updatedb(1), xargs(1), lstat(2), stat(2), ctime(3), fnmatch(3), printf(3), strftime(3), locatedb(5), regex(7)
* Fullständig dokumentation <https://www.gnu.org/software/findutils/find> eller tillgänglig lokalt via: info find


* `-name NAMN` - Sök efter filer med ett specifikt namn. Du kan använda jokertecken för att matcha mönster, t.ex. `*.txt` för att hitta alla textfiler.
== KOLOFON ==
* `-iname NAMN` - Sök efter filer med ett specifikt namn, ignorera skiftlägeskänslighet. Användbart i situationer där du inte är säker på filnamnets skiftläge.
* Denna sida är en del av findutils (sökverktyg) projektet. Information om projektet finns på ⟨http://www.gnu.org/software/findutils/⟩. Om du har en felrapport för denna manualsida, se ⟨https://savannah.gnu.org/bugs/?group=findutils⟩. Denna sida erhölls från projektets uppströms Git-förråd ⟨git://git.savannah.gnu.org/findutils.git⟩ den 2024-06-14. (Vid den tiden var datumet för det senaste inlägget som hittades i förrådet 2024-06-03.) Om du upptäcker några renderingproblem i denna HTML-version av sidan, eller du tror att det finns en bättre eller mer uppdaterad källa för sidan, eller du har korrigeringar eller förbättringar till informationen i denna KOLOFON (som inte är en del av den ursprungliga manualsida), skicka ett mail till man-pages@man7.org
* `-type TYP` - Sök efter en viss typ av filer. Vanliga typer inkluderar:
  * `f` - vanliga filer
  * `d` - kataloger
  * `l` - symboliska länkar
  * `c` - teckenfiler
  * `b` - blockfiler
  * `s` - socketfiler
  * `p` - named pipes
* `-perm MODE` - Sök efter filer med specifika rättigheter. MODE kan anges på olika sätt, t.ex. `755` för vanliga rättigheter eller `+x` för alla filer med exekveringsrättigheter.
* `-user ANVÄNDARE` - Sök efter filer som ägs av en viss användare. Du kan ange användarnamnet eller UID.
* `-group GRUPP` - Sök efter filer som tillhör en viss grupp. Du kan ange gruppnamnet eller GID.
* `-mtime n` - Sök efter filer som ändrades för n dagar sedan. Använd `+n` för filer som ändrades för mer än n dagar sedan och `-n` för filer som ändrades för mindre än n dagar sedan.
* `-atime n` - Sök efter filer som åtkomstades för n dagar sedan, på samma sätt som `-mtime`.
* `-ctime n` - Sök efter filer vars metadata ändrades för n dagar sedan.
* `-size n` - Sök efter filer av en viss storlek. Använd `c` för byte, `k` för kilobyte, `M` för megabyte och `G` för gigabyte.
* `-exec KOMMANDO {} \;` - Utför ett kommando på varje fil som matchar. `{}` ersätts med filens namn. Exemplet `-exec rm {} \;` tar bort varje fil som matchar.
* `-ok KOMMANDO {} \;` - Fråga användaren innan du utför ett kommando på varje fil som matchar.
* `-delete` - Ta bort filer som matchar. Används med försiktighet eftersom det permanent tar bort filer.
* `-print` - Skriv ut sökresultaten. Detta är standardåtgärden om inget annat anges.


=== Fler avancerade alternativ ===
För mer avancerad användning kan `find` kombineras med logiska operatorer och ytterligare alternativ:
* `-and` - Kombinera flera villkor med AND-logik. Kan även anges med `-a`.
* `-or` - Kombinera flera villkor med OR-logik. Kan även anges med `-o`.
* `-not` - Invertera ett villkor. Kan även anges med `!`.
* `-maxdepth N` - Begränsa sökningen till en maximal djupnivå på N.
* `-mindepth N` - Begränsa sökningen till en minimal djupnivå på N.
* `-newer F` - Sök efter filer som är nyare än filen F.
* `-cnewer F` - Sök efter filer vars metadata ändrades senare än filen F.
* `-anewer F` - Sök efter filer som åtkomstades senare än filen F.
* `-empty` - Sök efter tomma filer eller kataloger.
* `-path MÖNSTER` - Sök efter filer som matchar en specifik sökväg.
* `-ipath MÖNSTER` - Sök efter filer som matchar en specifik sökväg, ignorera skiftlägeskänslighet.
* `-regex MÖNSTER` - Sök efter filer som matchar ett reguljärt uttryck.
* `-iregex MÖNSTER` - Sök efter filer som matchar ett reguljärt uttryck, ignorera skiftlägeskänslighet.
=== Exempel ===
Här är några praktiska exempel som visar hur du kan använda `find`-kommandot:
* För att hitta alla filer med namnet `fil.txt`:
<code>
find / -name fil.txt
</code>
Detta kommando söker i hela filsystemet efter filer med namnet `fil.txt`.
* För att hitta alla kataloger:
<code>
find / -type d
</code>
Detta kommando söker i hela filsystemet efter kataloger.
* För att hitta alla filer större än 100 MB:
<code>
find / -size +100M
</code>
Detta kommando söker efter alla filer större än 100 megabyte.
* För att hitta filer ägda av användaren `användare`:
<code>
find / -user användare
</code>
Detta kommando söker efter filer som ägs av användaren `användare`.
* För att hitta och ta bort alla filer med ändelsen `.tmp`:
<code>
find / -name "*.tmp" -delete
</code>
Detta kommando söker efter alla filer med ändelsen `.tmp` och tar bort dem.
* För att hitta alla filer ändrade inom de senaste 7 dagarna och lista dem:
<code>
find / -mtime -7 -print
</code>
Detta kommando söker efter filer som har ändrats inom de senaste 7 dagarna och listar dem.
* För att hitta alla filer och utföra ett kommando på varje matchande fil:
<code>
find / -name "*.log" -exec rm -f {} \;
</code>
Detta kommando söker efter alla filer med ändelsen `.log` och tar bort dem.
* För att hitta alla tomma filer och kataloger:
<code>
find / -empty
</code>
Detta kommando söker efter alla tomma filer och kataloger i hela filsystemet.
* För att hitta alla filer med åtkomsttiden senare än en specifik fil:
<code>
find / -anewer referensfil
</code>
Detta kommando söker efter alla filer som har åtkomstats senare än filen `referensfil`.
* För att hitta alla filer som matchar ett specifikt reguljärt uttryck:
<code>
find / -regex ".*[0-9]{4}-[0-9]{2}-[0-9]{2}.*"
</code>
Detta kommando söker efter filer vars namn matchar datumformatet `åååå-mm-dd`.
* För att söka efter filer med en specifik rättighet:
<code>
find / -perm 755
</code>
Detta kommando söker efter alla filer med rättigheten `755`.
* För att söka i en specifik katalog och dess underkataloger:
<code>
find /home/användare/dokument -name "*.pdf"
</code>
Detta kommando söker efter alla PDF-filer i katalogen `/home/användare/dokument` och dess underkataloger.
=== Skillnader mellan macOS och Linux ===
Det finns några viktiga skillnader att tänka på när man använder `find`-kommandot på macOS jämfört med Linux:
* **Standardinstallationer**: På de flesta Linux-distributioner är `find`-kommandot en del av GNU findutils, medan macOS använder BSD-versionen av `find`. Detta innebär att vissa alternativ och beteenden kan skilja sig åt.
* **Alternativ för symboliska länkar**: På Linux kan du använda `-L`, `-P`, och `-H` för att styra hur symboliska länkar hanteras. På macOS stöds också dessa alternativ, men deras beteende kan skilja sig något på grund av de underliggande skillnaderna i operativsystemens filsystemshantering.
* **-iname och -ipath**: Dessa alternativ är tillgängliga på både Linux och macOS, men eftersom macOS filsystem är skiftlägesokänsligt som standard, kan resultaten skilja sig när du använder dessa alternativ.
* **-regex och -iregex**: Reguljära uttryck hanteras på liknande sätt på både Linux och macOS, men det kan finnas små skillnader i hur specifika mönster tolkas beroende på versionen av `find` och de reguljära uttrycksbibliotek som används.
* **Prestanda och optimering**: Linux och macOS kan ha olika prestandakarakteristika beroende på hur deras filsystem och sökalgoritmer är implementerade. macOS använder HFS+ eller APFS, medan Linux vanligtvis använder ext4, Btrfs, XFS eller andra filsystem. Detta kan påverka hur snabbt `find`-kommandot utför sina sökningar.
* **Funktioner och flaggor**: Vissa GNU-specifika flaggor och funktioner kan saknas i BSD-versionen av `find` som används på macOS. Till exempel kan `-printf`-alternativet, som finns i GNU findutils, saknas i macOS `find`.
Här är några exempel som visar skillnaderna:
* På Linux kan du använda `-printf` för att formatera utdata:
<code>
find . -name "*.txt" -printf "%p\n"
</code>
Detta fungerar inte på macOS.
* På macOS kan du behöva använda en annan syntax eller rörledning för att uppnå samma resultat:
<code>
find . -name "*.txt" -exec echo {} \;
</code>
* Användning av `-exec` på macOS kan kräva att du använder `+` istället för `\;` för att effektivisera utförandet:
<code>
find . -name "*.txt" -exec ls -l {} +
</code>
Det är alltid bra att konsultera `man`-sidan för `find` på din specifika plattform för att se vilka alternativ och funktioner som är tillgängliga.
=== Felsökning ===
Om du får ett felmeddelande när du använder `find`, kontrollera följande:
* Att du har rättigheter att läsa de kataloger du söker i. Om du inte har tillräckliga rättigheter kan du få åtkomstfel.
* Att syntaxen för ditt uttryck är korrekt. Kontrollera att du använder korrekta alternativ och parametrar.
* Att du inte använder för många symboliska länkar utan att följa dem, om det är nödvändigt.
=== Se även ===
* [[grep]] - Sök efter mönster i filer.
* [[locate]] - Hitta filer snabbt med en databas.
* [[xargs]] - Bygg och kör kommandon från standardinmatning.
* [[chmod]] - Ändra filrättigheter.
* [[chown]] - Ändra ägande av filer och kataloger.
=== Källor ===
* [https://man7.org/linux/man-pages/man1/find.1.html find(1) man-sida]
* [https://ss64.com/osx/find.html macOS find manual]


= Sidslut =
= Sidslut =

Versionen från 1 september 2024 kl. 18.43

FIND(1)

Allmänna kommandomanualer FIND(1)

NAMN

  • find - sök efter filer i en katalogstruktur

SYNTAX

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

BESKRIVNING

  • Denna manual sida dokumenterar GNU-versionen av find. GNU find söker igenom katalogträdet med start från varje angiven startpunkt genom att utvärdera det givna uttrycket från vänster till höger, enligt reglerna för prioritetsordning (se avsnitt OPERATORER), tills resultatet är känt (den vänstra sidan är falsk för och-operationer, sann för eller), vid vilken punkt find går vidare till nästa filnamn. Om ingen startpunkt anges, antas '.'.
  • Om du använder find i en miljö där säkerheten är viktig (till exempel om du använder den för att söka i kataloger som är skrivbara av andra användare), bör du läsa kapitlet 'Säkerhetsöverväganden' i dokumentationen för findutils, som heter Finding Files och kommer med findutils. Detta dokument innehåller också mycket mer detaljer och diskussion än denna manual, så det kan vara en mer användbar informationskälla.

ALTERNATIV

  • Alternativen -H, -L och -P styr behandlingen av symboliska länkar. Kommandoradsargument efter dessa tas att vara namn på filer eller kataloger som ska undersökas, upp till det första argumentet som börjar med '-', eller argumentet '(' eller '!'. Detta argument och eventuella efterföljande argument tas att vara uttrycket som beskriver vad som ska sökas efter. Om inga sökvägar anges används den aktuella katalogen. Om inget uttryck anges används uttrycket -print (men du bör troligen överväga att använda -print0 istället, hur som helst).

UTTRYCK

  • Delen av kommandoraden efter listan över startpunkter är uttrycket. Detta är en slags frågespecifikation som beskriver hur vi matchar filer och vad vi gör med de filer som matchades. Ett uttryck är sammansatt av en sekvens av saker:
    • Tester Tester returnerar ett sant eller falskt värde, vanligtvis baserat på någon egenskap hos en fil vi överväger. Testet -empty till exempel är sant endast när den aktuella filen är tom.
    • Åtgärder Åtgärder har sido effekter (som att skriva ut något på standardutmatningen) och returnerar antingen sant eller falskt, vanligtvis baserat på om de är framgångsrika eller inte. Åtgärden -print till exempel skriver ut namnet på den aktuella filen på standardutmatningen.
    • Globala alternativ Globala alternativ påverkar driften av tester och åtgärder som anges på någon del av kommandoraden. Globala alternativ returnerar alltid sant. Alternativet -depth till exempel får find att genomgå filsystemet i en djupförst ordning.
    • Positionella alternativ Positionella alternativ påverkar endast tester eller åtgärder som följer dem. Positionella alternativ returnerar alltid sant. Alternativet -regextype till exempel är positionellt och specificerar det reguljära uttrycksdialekt för reguljära uttryck som förekommer senare på kommandoraden.
    • Operatorer Operatorer sammankopplar de andra objekten inom uttrycket. De inkluderar till exempel -o (betyder logiskt ELLER) och -a (betyder logiskt OCH). Där en operator saknas, antas -a.

SE OCKSÅ

  • chmod(1), locate(1), ls(1), updatedb(1), xargs(1), lstat(2), stat(2), ctime(3), fnmatch(3), printf(3), strftime(3), locatedb(5), regex(7)
  • Fullständig dokumentation <https://www.gnu.org/software/findutils/find> eller tillgänglig lokalt via: info find

KOLOFON

  • Denna sida är en del av findutils (sökverktyg) projektet. Information om projektet finns på ⟨http://www.gnu.org/software/findutils/⟩. Om du har en felrapport för denna manualsida, se ⟨https://savannah.gnu.org/bugs/?group=findutils⟩. Denna sida erhölls från projektets uppströms Git-förråd ⟨git://git.savannah.gnu.org/findutils.git⟩ den 2024-06-14. (Vid den tiden var datumet för det senaste inlägget som hittades i förrådet 2024-06-03.) Om du upptäcker några renderingproblem i denna HTML-version av sidan, eller du tror att det finns en bättre eller mer uppdaterad källa för sidan, eller du har korrigeringar eller förbättringar till informationen i denna KOLOFON (som inte är en del av den ursprungliga manualsida), skicka ett mail till man-pages@man7.org


Sidslut


Det här är en maskinöversättning av linux kommando manualen 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 webserver.