40 legjobb példa a Find parancsra Linuxban

A Linux find parancsa egy hatékony eszköz, amely lehetővé teszi a rendszergazdák számára, hogy a keresési feltételek széles skálája alapján keressenek meg és kezeljenek fájlokat és könyvtárakat. Megkeresheti a könyvtárakat és fájlokat nevük, típusuk vagy kiterjesztésük, méretük, engedélyeik stb. szerint.

A fájlok és könyvtárak megkeresése mellett a find parancs másokkal való kombinálása lehetővé teszi, hogy lépéseket tegyen az eredményekkel kapcsolatban. Az -exec kapcsoló hozzáadása lehetővé teszi a rendszergazdák számára, hogy külső parancsokat futtathassanak, és olyan műveleteket hajtsanak végre, mint a fájlok másolása, áthelyezése, törlése vagy a megadott feltételeknek megfelelő fájlok engedélyeinek módosítása, például méret, név stb.

Ebben a cikkben azzal kezdjük, hogy példákkal magyarázzuk el az alapvető Linux keresési parancsokat. Ez megmutatja, hogyan kereshet fájlokat és könyvtárakat. Ezután megmutatjuk, hogyan használhatja az -exec opciót a fájlokra vagy könyvtárakra a méretük, engedélyeik stb. alapján.

A find parancs általános szintaxisa a következő

find {path} {name -of-file or dir-to-search} {action-to-take}

Ahol,

  • útvonal megadja a könyvtárat.
  • fájl neve vagy keresendő könyvtár : A keresendő fájl vagy könyvtár neve
  • teendők: például másolás, törlés, áthelyezés stb.

Ebben az oktatóanyagban elmagyarázzuk, hogyan lehet megtalálni a megadott mintáknak megfelelő fájlokat és könyvtárakat. Azt is látni fogjuk, hogyan hajthatunk végre műveleteket a find parancs által megkeresett fájlokon vagy könyvtárakon. Az útmutató az Ubuntu alapú, de a legtöbb Linux disztribúcióra és verzióra alkalmazható.

Tartalomjegyzék

Fájlok és könyvtárak keresése

Adott fájlok keresése név vagy kiterjesztés alapján

Egy adott fájl kereséséhez futtassa a következő parancsot a gyökérből (/). A parancs a keresett fájl pontos nevét tartalmazza.

find . -name file22.txt

Kimenet

./test/file22.txt
./sales/file22.txt

Kérjük, vegye figyelembe, hogy az eredmények tartalmazzák az elérési utat. Ez akkor fontos, ha nem ismeri a könyvtárat, ahol a fájl található, vagy ha egynél több helyen található.

A fájlt egy másik könyvtárban is megkeresheti, miközben továbbra is az aktuális helyen van. Ebben az esetben meg kell adnia annak a könyvtárnak az elérési útját, ahol keresni szeretne.

find ./test -name file22.txt

Adott fájlokat keres egy másik könyvtárban

Esetünkben a tesztkönyvtárban meg fogjuk keresni mindazokat, amelyek a letters fájllal kezdődnek.

find ./test -name file*

Kimenet

./test/file22.txt
./test/file30.doc
./test/file1.txt
./test/file5,doc

Fájlok keresése kiterjesztéssel

Ha egy adott kiterjesztéssel rendelkező fájlt szeretne találni Linuxban, adja hozzá a parancshoz.

find . -name *.txt

Kimenet

./test/subtest/subfil.txt
./test/file22.txt
./test/file1.txt
./home1/files32.txt
./home2/file22.txt
./qa/tags.txt

Fájlok és könyvtárak keresése név szerint

Az alábbi paranccsal kereshet qa betűkkel kezdődő fájlokat és könyvtárakat. Számítógépünkön van a qatree.txt és qa.txt fájl, valamint egy qa nevű könyvtár.

  Hogyan készíts biztonsági másolatot a dolgaidról, és válts új Mac-re

Ha futtatjuk a parancsot;

find ./ -name "qa*"

A következő kimenetet adja vissza

./test/qatree.pdf
./test/qa.txt
./home/qa

A parancs a keresési feltételeknek megfelelő fájlokat és könyvtárakat is visszaadja. Ha csak fájlokat vagy könyvtárakat szeretne keresni, ezt meg kell adnia a parancsban.

Csak fájlok vagy könyvtárak keresése

Csak fájlok esetén használja az f típusú kapcsolót.

Csak fájlok

find ./ -type f -name "qa*"

Kimenet

./test/qatree.pdf
./test/qa.txt

Csak a címtárak

Csak a könyvtárak megkereséséhez adja hozzá a d típusú beállítást.

find ./ -type d -name "qa*"

Kimenet

./home/qa

A kis- és nagybetűk nem megkülönböztetik a keresési parancsot

A -name kapcsolóval végzett összes keresés megkülönbözteti a kis- és nagybetűket, és nem ad nagybetűs találatokat. Az összes eset megjelenítéséhez használja a -iname kapcsolót.

find ./ -iname "qa*"

Kimenet

./test/qatree.pdf
./test/qa.txt
./test/QAtest.txt
./home/qa

Fájl keresése több könyvtárból

A különböző könyvtárakban lévő fájlok megkereséséhez adja hozzá az elérési útjukat a parancshoz. Esetünkben a teszt és a numerikus könyvtárakat fogjuk ellenőrizni.

find ./test ./numeric -name file22.txt -type f

Kimenet

./test/file22.txt
/root/numeric/file22.txt

Keressen több különböző kiterjesztésű fájlt az összes könyvtárból

A find paranccsal több olyan fájlt is megkereshet, amelyek a különböző kiterjesztéseken osztoznak, például *.doc, *.txt *.pdf stb. Ezt megteheti külön-külön, egy-egy kiterjesztéssel, vagy csak egyetlen paranccsal, amely az összes fájlt tartalmazza. a kívánt bővítményeket.

megtalálja . -type f ( -name „*.txt” -o -name „*.pdf” -o -name „*.doc” )

Kimenet

./test/subtest/subfil.txt
./test/qatree.pdf
./test/file22.txt
./test/qa.txt
./test/file30.doc
./books/acro.pdf
./data1/FILE22.txt
./docs/files32.txt

Keressen bizonyos szöveget tartalmazó fájlokat

Néha szeretne hozzáférni egy bizonyos szöveget tartalmazó fájlhoz, de nem tudja előhívni a fájl nevét vagy helyét. Ezzel a paranccsal megtalálhatja a célszöveget tartalmazó összes fájlt.

A hiperkonvergencia szót tartalmazó összes fájl megkereséséhez használja a;

find / -type f -exec grep -l -i "hyperconvergence" {} ;

Kimenet

/root/numeric/hci
/root/HCIP

Az –i opció lehetővé teszi, hogy a parancs figyelmen kívül hagyja az eseteket, és megkeresi a szöveget, akár nagybetűvel, akár nem, pl. hiperkonvergencia, hiperkonvergencia stb.

Ha egy adott könyvtárban szeretné keresni a fájlokat, egyszerűen adja hozzá őket a parancshoz

find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;

Kimenet

./numeric/hci

Fedezzen fel további grep parancs példákat.

Fájlok és könyvtárak keresése a méret alapján

Megtalálható minden olyan fájl vagy könyvtár, amely kisebb, egyenlő vagy nagyobb egy bizonyos méretnél, egy adott tartományon belül vagy üres. Használja a megfelelő méretformátumot a keresett fájlok vagy könyvtárak típusától függően.

A méretbeállítások közé tartozik;

c – bájtok

k – kilobájt

M – Megabájt

G – Gigabájt

Meghatározott méretű – 30 MB-nak megfelelő – fájlok keresése

A kereséshez keresse meg az összes 30 MB-os fájlt

find / -size 30M

Keresse meg a megadott méretnél nagyobb fájlokat

find -size +2M

Kimenet

. /Downloads/ubuntu18043.iso 
./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c

10 MB-nál kisebb fájlok keresése az aktuális könyvtárban

find . -type f -size -10M

Keressen 100-200 MB méretű fájlokat

Ha egy adott tartományon belül, például 100 és 200 MB közötti fájlokat keres

find / -size +100M -size -200M

Keressen 20 kb-nál nagyobb könyvtárakat

find / -type d -size +20k

Keressen üres fájlokat és könyvtárakat.

Fájlok

keresse meg a ./ -típusú f – 0-s méretet

vagy

find ./ -type f –empty

Könyvtárak

find ./ -type d –empty

Fájlok keresése kor vagy módosítási idő szerint

n napnál régebbi fájlok keresése

find /path/ -type f -name '*.txt' -mtime +8

Az -mtime +8 8 napnál régebbi txt fájlokat keres.

Módosítás dátuma szerint

Ez megkeresi az elmúlt 17 órában módosított fájlokat

find . -mtime -17 -type f 

Az elmúlt 10 napban módosított könyvtárakat keresi

find . -mtime -10 -type d 

Fájlok keresése hozzáférés vagy módosítás alapján

Fájlok keresése a hozzáférés dátuma vagy időpontja alapján. Ez lehetővé teszi, hogy megtekinthesse azokat a fájlokat, amelyekhez egy meghatározott időszakon belül hozzáfértek vagy nem.

Az elmúlt 10 napban nem elért fájlok megtekintése a saját könyvtárban.

find /home -atime +10

A fájlokat pontosan 10 napja értek el

find /home -atime 10

Hozzáférés az elmúlt 10 napban

find /home -atime -10

Az elmúlt n napban módosított fájlok keresése

A paranccsal megkeresheti a /home könyvtárban az elmúlt 10 napon belül módosított fájlokat is;

find /home -mtime -10 

Egy adott időszakon belül módosított fájlok keresése.

Például a saját könyvtárban 6 és 15 napja között módosított összes fájl.

find /home -type f -mtime +6 -mtime -15

Az elmúlt 10 percben elért fájlok és könyvtárak

Az elmúlt 10 percben elért fájlok megkereséséhez használja az -amin kapcsolót.

find . -amin -10 -type f

Kimenet

./.bash_history
./[email protected]:~#

Az elmúlt 10 percben elért könyvtárak

find . -amin -10 -type d

Keresse meg a meghatározott engedélyeknek megfelelő fájlokat

Szintaxis

$ find -perm mode

Ahol a mód az engedély, amely vagy numerikus, például 644, 655, 700, 777 stb., vagy betűk, például u=x, a=r+x stb.

  Hogyan rendelnek a bûnözõk telefonokat a te nevedre (és hogyan állíthatod le)

A módot a következő három különböző módon adhatja meg.

  • Előtag nélkül, ha pontosan a megadott engedélyekkel rendelkező fájlokat akarja megtalálni.
  • A „-” jellel a legalább a megadott engedéllyel rendelkező fájlok esetén. Ez a megadott, valamint további magasabb jogosultságokkal rendelkező fájlokat adja vissza.
  • A „/” használatához meg kell adni a fájlhoz engedéllyel rendelkező tulajdonost vagy csoportot.
  • Keresse meg a 777-es engedéllyel rendelkező fájlokat

    find -perm 777

    Kimenet

    ./file1

    Keresse meg a legalább 766-os fájlokat
    talál -perm -766

    Kimenet

    ./file2
    ./file1

    A parancs minden olyan fájlt megkeres, amelyben a

    • A fájl tulajdonosa olvasási/írási/végrehajtási jogosultsággal rendelkezik.
    • A csoport olvasási/írási jogosultsággal rendelkezik
    • Mások írási/olvasási engedéllyel rendelkeznek

    Mint ilyen, két olyan fájlt ad vissza, amelyek megfelelnek ennek a feltételnek – a fájl1 és a fájl2. A fájloknak nem kell pontosan a 766-os engedélyekkel rendelkezniük, és lehetnek további engedélyek is, de legalább a megadottakkal rendelkezniük kell.

    Keresse meg a tulajdonos által írható fájlokat

    Mostantól a „/” jelet fogjuk használni a tulajdonosuk, csoportjuk vagy mások által írható fájlok keresésére.

    find -perm /222
    .
    ./file2
    ./file3
    ./file1

    A fentiek olyan fájlokat keresnek, amelyeket tulajdonosuk vagy csoportjuk írhat.
    Ez olyan fájlokat ad vissza, amelyeket bármelyik írhat, de nem feltétlenül mindkettő. Az olyan fájlok megtekintéséhez használja a – előtagot, ahol mindkettő rendelkezik írási engedéllyel.

    find -perm -220

    Kimenet

    ./file2
    ./file1

    Keresse meg a felhasználó tulajdonában lévő fájlokat

    Keresse meg a Jack tulajdonában lévő összes fájlt

    find /home -user jack

    Kimenet

    /home/jack
    /home/jack/examples.desktop
    /home/jack/.gnupg
    /home/jack/.gnupg/private-keys-v1.d
    /home/jack/ans.cgi

    Keresse meg a felhasználó tulajdonában lévő konkrét fájlokat

    Keresse meg az összes Jack tulajdonában lévő szövegfájlt

    find /home -user jack -iname "*.txt"

    Kimenet

    /home/jack/docs/file32.txt

    Fájlok és könyvtárak keresése és listázása az engedélyekkel együtt

    find -name "*.conf" | ls -l

    Kimenet

    total 120
    drwxr-xr-x 2 root root 4096 Dec 31 13:19 backup2
    drwxr-xr-x 2 root root 4096 Jan 4 11:57 Desktop
    drwxr-xr-x 2 root root 4096 Dec 31 11:50 Documents
    drwxr-xr-x 2 root root 4096 Dec 31 12:27 Downloads
    -rw-r--r-- 1 root root 0 Jan 4 12:02 file22.doc
    drwxr-xr-x 2 root root 4096 Jan 4 12:14 file23
    -rw-r--r-- 1 root root 0 Jan 4 12:23 file23.txt

    Keresse meg és cselekedjen az eredmények alapján

    Ebben a részben megvizsgáljuk, hogyan lehet eljárni azokkal a fájlokkal, amelyek megfelelnek a find parancsban megadott mintának.

    Fájlok keresése és engedélyek módosítása

    Bizonyos fájltípusok engedélyeinek megkeresése és módosítása. A mi esetünkben különböző engedélyekkel rendelkező PHP fájlokkal fogunk dolgozni, az alábbiak szerint.

    [email protected]:~/ver$ ls -la
    
    total 8
    drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
    drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 base.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 vary.php

    Most megkeressük az összes PHP-fájlt (fent), és lecseréljük az engedélyeiket 755-re

    find ver -name "*.php" -type f -exec chmod 755 {} ;

    A parancs megkeresi a PHP fájlokat a ver könyvtárban, majd 755-re állítja az engedélyüket (rwxr-xr-x)

    Eredmények

    [email protected]:~/ver$ ls -la
    total 8
    drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
    drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 base.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 vary.php

    Fájl- és könyvtárengedélyek keresése és módosítása

    Keresse meg a 644 engedéllyel rendelkező fájlokat, és módosítsa őket 655 engedélyre

    find . -type f -perm 644 -exec chmod 655 {} ;

    Kereshet 644 jogosultsággal rendelkező könyvtárakat is, és ezt lecserélheti 755-re.

    find . -type d -perm 644

    Kimenet

    ./docs   

    A docs mappának 644 engedélye van

    drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs

    755-re állítjuk, futunk

    find . -type d -perm 644 -exec chmod 755 {} ;

    Most újra ellenőrizhetjük, hogy pontosan mi a 755

    find . -type d -perm 755

    Kimenet
    .
    ./docs

      Az Outlook-bővítmények letiltása a hibaelhárításhoz

    Felülről láthatjuk, hogy a gyökér és a docs könyvtárak rendelkeznek a 755-ös jogosultsággal.

    Az Ls –la parancs a következő részleteket adja meg

    drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs

    Fájlok vagy könyvtárak keresése és másolása

    Keressen meg és másoljon egy adott fájlt egy könyvtárba

    Az alábbi parancs megkeresi a file22.txt fájlt, és bemásolja a ~/tmp/images könyvtárba.

    find -iname file22.txt -exec cp {} ~/tmp/images ;

    Keressen meg és másoljon egy fájltípust egy könyvtárba

    Fájlok, például jpg kiterjesztésű képek megkereséséhez az aktuális könyvtárban és másolásuk másik helyre, például egy képek mappába, használja a;

    find -iname '*.jpg' -exec cp {} ~/tmp/images ;

    Ez megkeresi és átmásolja az összes jpg fájlt a ~/tmp/images mappába.

    Keressen meg és másoljon egy fájlt több könyvtárba

    Keressen és másoljon egyet több könyvtárba.

    find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;

    Ez megkeresi a hci fájlt, és bemásolja a /tmp/dir1/ /tmp/dir2/ és a $HOME/3/ három könyvtárába.

    Fájlok keresése és áthelyezése egy másik könyvtárba

    Ismert fájl áthelyezése egy könyvtárból egy másikba. Az universal.php fájl áthelyezése;

    find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;

    Keressen és helyezzen át egy bizonyos kiterjesztésű fájlokat egy másik mappába

    find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;

    Keressen meg bizonyos fájlokat, és lépjen át egy adott másik mappába

    find -type f -name uni*.* -exec mv {} ~/unifiles/ ;

    A parancs megkeresi az összes uni-val kezdődő és bármilyen kiterjesztésű fájlt. Ezután áthelyezi őket az /unifiles/ könyvtárba

    Fájlok keresése és áthelyezése életkor alapján

    Keresse meg és helyezze át a megadott napoknál régebbi fájlokat egy másik helyre, például az archívumba.

    find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;

    Ez megkeresi a 20 napnál régebbi pdf-fájlokat, és áthelyezi őket a backup1 könyvtárba.

    Fájlok és könyvtárak keresése és törlése

    Az aktuális könyvtárban lévő fájlok vagy könyvtárak megtalálásának és eltávolításának szintaxisa a következő

    megtalálja . -type f -name “törölendő fájl” -exec rm -f {} ; csak fájlok törléséhez ill

    megtalálja . -type d -name “dir-to-delete” -exec rm -rf {} ; csak a könyvtárak törléséhez

    Csak meghatározott fájlok keresése és törlése

    A til betűvel kezdődő fájlok kereséséhez és törléséhez használja a;

    find . -type f -name "til*" -exec rm {} ; 

    A til kezdetű könyvtárak kereséséhez és törléséhez

    find . -type d -name "til*" -exec rm {} ;

    Távolítsa el mind a fájlokat, mind a könyvtárakat

    find . -name "til*" -exec rm -rf {} ; 

    Ez eltávolítja a til betűkkel kezdődő fájlokat és könyvtárakat.

    Törlés kiterjesztéssel

    Az alábbiakban bemutatjuk, hogyan keresheti meg és törölheti az összes txt fájlt az aktuális könyvtárban. Cserélje ki a txt fájlt egy másik kiterjesztéssel, például bak, pdf vagy bármely más, amelyet el szeretne távolítani.

    find . -type f -name "*.txt" -exec rm -f {} ;

    Ha azt szeretné, hogy a rendszer megerősítést kérjen az egyes fájlok törlése előtt, adja hozzá az -i kapcsolót az alábbiak szerint.

    find . -type f -name "*.txt" -exec rm -i {} ;

    Kimenet

    rm: remove regular empty file './File22.txt'? y
    rm: remove regular empty file './file22.txt'? y
    rm: remove regular empty file './file23.txt'?

    Alapértelmezés szerint az -rm nem távolítja el a könyvtárakat, és a –r kapcsolót kell használnia a rekurzív eltávolítás biztosításához. Ez biztosítja az üres és fájlokat tartalmazó könyvtárak törlését. Az -f opció kényszeríti az eltávolítást, és mind a fájlok, mind a könyvtárak esetén használatos.

    n napnál régebbi fájlok keresése és törlése

    Keresse meg és törölje a 20 napnál régebbi biztonsági mentési fájlokat az aktuális könyvtárból.

    find . -type f -name '*.bak' -mtime +20 -exec rm {} ;

    Ezzel törli az összes 20 napnál régebbi .bak fájlt.

    Csak könyvtárakat kereshet és törölhet

    A dir22 nevű könyvtár törléséhez

    find . -type d -name dir22 -exec rm -rf {} ;

    Győződjön meg arról, hogy megegyezik a könyvtárnév kis- és nagybetűjével, vagy használja a -iname kapcsolót.

    find . -type d -iname Dir22 -exec rm -rf {} ;

    Eltávolítja a Dir22-t és a dir22-t is

    A törlés előtti megerősítéshez használja a -i kapcsolót.

    find . -type d -iname Dir22 -exec rm -rf -i {} ;

    Kimenet
    rm: eltávolítja a ‘./Dir22’ könyvtárat? n
    rm: eltávolítja a ‘./dir22’ könyvtárat? y

    Esetünkben n-et írtunk be a Dir22 könyvtárhoz, amely nem törlődik, és y-t a dir22 könyvtárhoz, amelyet most eltávolítunk.

    Üres fájlok keresése és eltávolítása

    Az üres fájlok megkereséséhez és automatikus törléséhez használhatja a következő parancsok bármelyikét.

    find ./ -type f -size 0 -exec rm -f {} ;

    vagy
    talál ./ -type f -size 0 | xargs rm -f
    vagy
    keresse meg ./ -type f -size 0 –delete

    Keresse meg és távolítsa el az üres könyvtárakat

    Az üres könyvtárak eltávolításához a d opciót használjuk.

    find ./ -type d -empty -exec rmdir {} ;

    Egy másik alternatíva a törlés használata az eltávolítás helyett.

    find ./ -type d -empty -delete

    Kérjük, vegye figyelembe, hogy a rendszer- vagy kritikus fájlok törlése a számítógépről károsíthatja az operációs rendszert vagy az alkalmazásokat, vagy fontos adatok elvesztéséhez vezethet.

    A véletlen törlések elkerülése érdekében a legjobb gyakorlat nem root felhasználói fiók használata. Győződjön meg arról is, hogy a megfelelő fájlokat törölte, amelyek nem hasznosak, és minden adatfájlról készítsen biztonsági másolatot minden esetre.

    Mi a következő lépés?

    Próbáld ki a fenti Linux find parancsokat laborodban vagy NON PRODUCTION környezetben. Nézze meg, használhat-e néhányat a fájlrendszer-tisztítás automatizálására a Crontab segítségével. És a Linux elsajátításához nézze meg ezt online tanfolyam.