uppdaterad: 11/30/2020 av Computer Hope

i Linux-operativsystem kan kommandot find användas för att söka efter filer och kataloger på din dator. För att fortsätta, välj en länk från följande lista eller gå igenom varje avsnitt i ordning.

Obs

för att använda Sök, börja med att öppna en terminalsession för att komma åt kommandoraden.

grundläggande funktionalitet för Sök

kör Sök utan några alternativ ger en lista över varje fil och katalog i och under arbetskatalogen., Till exempel, om din arbetskatalog är /home/hope/Documents, kör sök utmatar följande:

  • varje fil i /home/hope/Documents.
  • varje underkatalog i/hem/hopp / dokument.
  • varje fil i var och en av dessa underkataloger.

låt oss se det i aktion., Låt oss först kontrollera vår arbetskatalog genom att använda kommandot PWD:

pwd
/home/hope/Documents

låt oss nu köra Sök utan några alternativ:

find

i det här exemplet ser vi totalt tio filer och fyra underkataloger i och under mappen Dokument.

Observera att utmatningen börjar med en enda punkt, som representerar arbetskatalogen., Att köra Sök utan alternativ är detsamma som att ange att sökningen ska börja i arbetskatalogen, så här:

find .

exemplet ovan är det ”korrekta” sättet att använda Sök. Om du försöker använda den på ett annat Unix-liknande operativsystem, till exempel FreeBSD, krävs det att du anger en katalog. Det är bra att använda denna form av kommandot.,

ange var du ska söka

för att bara lista filer och underkataloger som finns i katalogen/home/hope/Documents/images, ange det första argumentet för kommandot som:

find /home/hope/Documents/images

Observera att den fullständiga sökvägen också visas i resultaten.,

om vår arbetskatalog är /home/hope/Documents kan vi använda följande kommando, som hittar samma filer:

find ./images

men den här gången återspeglar utmatningen startplatsen för sökningen och ser ut så här:

som standard ser sökningen ut i varje underkatalog till din startplats. Om du vill begränsa hur många nivåer av underkatalog som ska sökas kan du använda alternativet-maxdepth med ett nummer.

Ange till exempel-maxdepth 1 söker endast i katalogen där sökningen börjar., Om några underkataloger hittas listas de, men söks inte.,

find . -maxdepth 1
../images./bigfiles.txt./gimp-2.8.16.tar.bz2./hp-fanfic./archlinux-2016.02.01-dual.iso

Ange-maxdepth 2 söker i katalogen och en underkatalog deep:

find . -maxdepth 2

Ange-maxdepth 3 söker en nivå djupare än så:

find . -maxdepth 3

hitta efter namn

för att begränsa dina sökresultat till att matcha endast filer och kataloger som har ett visst namn, använd alternativet-name och sätt namnet i citat:

find . -name "picard.jpg"
./images/memes/picard.jpg

Du kan också använda jokertecken som en del av ditt filnamn., Till exempel, för att hitta alla filer vars namn slutar i .jpg, du kan använda en asterisk för att representera resten av filnamnet. När du kör kommandot kommer skalet att glob filnamnet till allt som matchar mönstret:

find . -name "*.jpg"
./images/hp/snape.jpg./images/hp/harry.jpg./images/memes/winteriscoming.jpg./images/memes/picard.jpg

Observera att vårt kommando inte listade filen vars förlängning (i det här fallet JPG) är med stora bokstäver. Det beror på att till skillnad från andra operativsystem, såsom Microsoft Windows, Linux filnamn är skiftlägeskänsliga.,”>

för att lista kataloger endast och utelämna filnamn, ange-typ d:

find . -type d
../images./images/hp./images/memes./hp-fanfic

hitta filer baserat på storlek

till exempel för att hitta filer som är ”större än 50 kilobyte”, använd-storlek +50k:

find . -size +50k
find . -size +50k
./images/memes/winteriscoming.jpg./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

För filer”större än 10 megabyte”, använd-Storlek +10M:

find . -size +10M
./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

För”större än 1 gigabyte”, använd-storlek +1g:

find . -size +1G
./archlinux-2016.02.01-dual.iso

För filer i ett visst storleksintervall, använd två storleksalternativ., Till exempel, för att hitta filer ”större än 10 megabyte, men mindre än 1 gigabyte”, ange-Storlek +10M-storlek-1G:

find . -size +10M -size -1G
./gimp-2.8.16.tar.bz2

att hitta filer baserat på modifiering, åtkomst eller statusändring

alternativet-mtime begränsar sökningen efter hur många dagar sedan filens innehåll ändrades. För att ange dagar tidigare, använd ett negativt tal., Till exempel, för att bara hitta de filer som har ändrats under de senaste två dagarna (48 timmar sedan), Använd-mtime -2:

find . -mtime -2

alternativet-mmin gör samma sak, men när det gäller minuter, inte dagar. Det här kommandot visar till exempel endast filer som ändrats under den senaste halvtimmen:

find . -mmin -30

ett liknande alternativ är-ctime, som kontrollerar när en fils status senast ändrades, mätt i dagar. En statusändring är en förändring i filens metadata. Till exempel, ändra behörigheter för en fil är statusändring.,

alternativet-Cmin söker efter en statusändring, mätt i minuter.

Du kan också söka efter när en fil senast var åtkomlig – med andra ord, när dess innehåll senast sågs. Alternativet-atime används för att söka efter filer baserat på deras senaste åtkomsttid, mätt i dagar.

alternativet-amin utför samma sökbegränsning, men mäts i minuter.

omdirigera utdata till en textfil

om du utför en mycket stor sökning kanske du vill spara dina sökresultat i en fil så att du kan se resultaten senare., Du kan göra detta genom att omdirigera din sökutmatning till en fil:

find . -iname "*.jpg" > images.txt

Du kan sedan öppna dina resultat i en textredigerare eller skriva ut dem med kommandot cat.

cat images.txt

alternativt kan du styra din utmatning till tee-kommandot, som skriver ut utmatningen till skärmen och skriver den till en fil:

find . -size +500M | tee bigfiles.txt
./archlinux-2016.02.01-dual.iso
cat bigfiles.txt
./archlinux-2016.02.01-dual.iso

undertrycka felmeddelanden

Du kan få felmeddelandet ”tillstånd nekat” när du utför en sökning., Om du till exempel söker i rotkatalogen som en vanlig användare:

find /

får du det felmeddelandet om SÖK försöker komma åt en fil som ditt användarkonto inte har behörighet att läsa. Du kan utföra sökningen som superuser( root), som har fullständig tillgång till varje fil på systemet. Men det rekommenderas inte att göra saker som rot, om det inte finns några andra alternativ.,

om allt du behöver göra är att dölja” Permission denied”- meddelandena kan du lägga till 2&>1 | grep-v” Permission denied”till slutet av ditt kommando, så här:

find / 2>&1 | grep -v "Permission denied"

ovanstående exempel filtrerar bort” Permission denied ” – meddelandena från din sökning. Hur?

2>& 1 är en speciell omdirigering som skickar felmeddelanden till standardutgången för att leda de kombinerade linjerna för utmatning till grep-kommandot., grep-v utför sedan en omvänd match på ”tillstånd nekad”, visar endast rader som inte innehåller den strängen.

omdirigering och användning av grep för att filtrera felmeddelandena är en användbar teknik när ”tillstånd nekas” belamrar dina sökresultat och du kan inte utföra sökningen som root.

exempel

find ~/. -name "*.txt" -amin -120

hitta alla filer i din hemkatalog och under vilket slut i tillägget ”.txt”. Visa endast filer som nås under de senaste två timmarna.,

find . -name "*.zip" -size +10M -mtime -3

hitta alla filer i arbetskatalogen och under vars namn har tillägget ”.zip ” och vars storlek är större än 10 megabyte. Visa endast filer vars innehåll har ändrats under de senaste 72 timmarna.

find . -iname "*report*" -type f -maxdepth 2

utför en skiftlägeskänslig sökning efter filer som innehåller ordet ”rapport” i deras namn. Om sökningen hittar en katalog med ”rapport” i sitt namn, visa den inte. Sök bara i arbetskatalogen och en katalognivå under den.,

find / -name "*init*" 2>&1 | grep -v "Permission denied" | tee ~/initfiles.txt

hitta alla filer på systemet vars namn innehåller ”init” och undertrycka felmeddelanden. Visa resultat på skärmen och mata ut dem till en fil i din hemkatalog med namnet ”initfiles.txt”.