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.
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.
A módot a következő három különböző módon adhatja meg.
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
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.