Ha gyakran dolgozik a parancssorban számítógépen vagy olyan szerveren, ahol nincs grafikus héj, előbb-utóbb szembe kell néznie azzal a feladattal, hogy fájlokat keressen. Szerencsére a Linux már rendelkezik egy beépített paranccsal, amely lehetővé teszi a fájl megtalálását a rendszeren.
Ma a find parancs használatáról fogunk beszélni - hidd el, meg kell tanulnod dolgozni ezzel a hatékony és kényelmes eszközzel.
Egyszerűen fogalmazva, a find parancs alapvető szintaxisa a következő:
Keresse meg a /path beállítások fájlnevét
Fedezzük fel a csapat lehetőségeit
Az első paraméter az elérési út. Ha fogalma sincs, hol rejtőzhet a fájl, az elérési út helyett tegye a /-t - ez elég. A teljes lemez keresése azonban meglehetősen hosszadalmas lehet, és ha tudja, hol lehet a fájl, adja meg azt a mappát, ahol a keresést el kívánja indítani (például ~ a felhasználó saját mappájában való kereséshez).
Most térjünk át a keresési lehetőségekre. Két lehetőség van a fájl név szerinti keresésére:
Emlékeztetni kell arra, hogy Linuxban a fájlnév kis- és nagybetűje számít, és ha meg kell találni például az Ubuntu.txt fájlt, akkor a következő parancs nem ad eredményt:
Keresse meg a / -name ubuntu.txt fájlt
De használhatja az iname parancsot, és végezhet kis- és nagybetűk közötti keresést:
Keresse meg a / -name ubuntu.txt fájlt
A find paranccsal nem csak fájlokat kereshet. Íme a keresés által támogatott leíró típusok:
Például, ha az aktuális felhasználó kezdőkönyvtárában a "config" karakterlánccal kezdődő összes könyvtárat meg szeretné keresni, futtassa a következő parancsot:
Keresse meg: ~ -type d -name config*
A parancs eredményének fájlba való kiírásának kényelmes funkciója rendkívül hasznos lesz, ha sok keresési eredmény van, vagy ha később dolgozni kell velük. Például azért, hogy listát vezessen az összes találtról konfigurációs fájlok fájlhoz conf_search, futtassa a következő parancsot:
Keresse meg a /etc -type f -name „*.conf” > conf_search elemet
Ez egy nagyon hasznos paraméter, amikor a lemezterület fogy, és meg kell értenie, hová tűnt. Például 1000 MB-nál nagyobb fájlok kereséséhez futtassa a következő parancsot:
Find / -size +1000M
A következő rövidítéseket használhatja:
Ez csak néhány módja egy erős csapat használatának. A parancs futtatásával több mód is megtalálható a kézikönyvben
Ez a cikk egy részlet a könyvből Linux&Unix - Shell programozás», David Tensley.
Sietve szerkesztettem párat, ha elgépelési hibákat észlelsz, írd meg kommentben.
A munka során gyakran szükségessé válik bizonyos jellemzőkkel rendelkező fájlok keresése, például hozzáférési jogok, méret, típus stb. A find parancs egy sokoldalú keresőeszköz: lehetővé teszi fájlok és könyvtárak keresését, a rendszer összes könyvtárának vagy csak az aktuális könyvtár megtekintését.
Ez a fejezet a find parancs használatával kapcsolatos alábbi témákat tárgyalja:
Parancslehetőségek keresése;
Példák a find parancs különféle opcióinak használatára;
Példák megosztás xargs és keresse meg a parancsokat.
A find parancs lehetőségei kiterjedtek, és a felkínált opciók listája is széles. Ez a fejezet a legfontosabbakat ismerteti. A find parancs akár lemezeken is kereshet NFS (hálózati fájl Rendszer- hálózati fájlrendszer), természetesen a megfelelő jogosultságokkal. BAN BEN hasonló esetek a parancs általában a háttérben fut le, mert a címtárfa böngészése időigényes. A find parancs általános formátuma:
megtalálja elérési út -opciók
Ahol elérési útnév az a könyvtár, ahonnan a keresést el kell indítani. A '.' karakter az aktuális könyvtár jelölésére szolgál, a / karakter a gyökérkönyvtár, a "~" karakter pedig a változóba van írva. $HOME az aktuális felhasználó saját könyvtára.
Maradjunk a find parancs főbb opcióinak leírásánál.
Név Olyan fájlok keresése, amelyek neve megegyezik a megadott mintával
Nyomtatás Írja be a talált fájlok teljes nevét a szabványos kimenetre.
Perm A megadott hozzáférési móddal rendelkező fájlok keresése
Prune A find parancs végrehajtásának megakadályozására szolgál rekurzív keresés már megtalált elérési útnévvel; ha a -depth opció meg van adva, a -prune kapcsoló figyelmen kívül marad
Felhasználó A megadott felhasználó tulajdonában lévő fájlok keresése
Csoport Egy adott csoporthoz tartozó fájlok keresése
Mtime -n+n Olyan fájlok keresése, amelyek tartalma kisebb, mint (-) vagy több mint (+) n napja; az -atime és -ctime opciók is lehetővé teszik a fájlok keresését az utolsó olvasás dátuma és a fájlattribútumok utolsó módosításának dátuma alapján.
Nogroup Nem létező csoporthoz tartozó fájlok keresése, amelyekhez, vagyis nincs bejegyzés a fájlban /etc/groups
Nouser Nem létező felhasználó tulajdonában lévő fájlok keresése, amelyekre, vagyis nincs bejegyzés a fájlban /etc/passwd
újabb fájlt Keressen olyan fájlokat, amelyek a megadott fájlnál később jöttek létre
Típus Adott típusú fájlokat keres, nevezetesen: b- speciális blokkfájl; d- katalógus; Val vel- speciális karakterfájl; p- nevű cső; l- szimbolikus link; s- aljzat; f- normál fájl
méret n Olyan fájlok keresése, amelyek mérete: n egységek; a következő mértékegységek lehetségesek: b- blokkméret 512 bájt (alapbeállítás); Val vel- bájt; k- kilobájt (1024 bájt); w- kétbájtos szó
Mélység Fájlok keresésekor először az aktuális könyvtár tartalmát keresi, és csak ezután kerül ellenőrzésre a könyvtárnak megfelelő bejegyzés
F stype Egy bizonyos típusú fájlrendszerben lévő fájlok keresése; általában a vonatkozó információkat egy fájlban tárolják /etc/fstab, amely a helyi számítógépen használt fájlrendszerekről tartalmaz adatokat
Mount Csak az aktuális fájlrendszerben keres fájlokat; ennek az opciónak analógja az -xdev -exec opció. Végrehajt egy interpreter parancsot héj minden észlelt fájl esetében; a végrehajtható parancsok formázási paranccsal rendelkeznek ( );
(jegyezd meg a () és a 😉 szimbólumok közötti szóközt
Ok Hasonló az -exec -hez, de a parancs végrehajtása előtt rákérdez
Amikor a find paranccsal dolgozik, a -name paramétert használják leggyakrabban. Utána egy fájlnév-mintának kell lennie idézőjelben.
Ha meg szeretné találni az összes kiterjesztésű fájlt. txt a saját könyvtárában adja meg a karaktert elérési útként. A kezdőkönyvtár nevét a rendszer kivonja a változóból $HOME.
$ find ~ -name "*.txt" -print
Az összes kiterjesztésű fájl megkereséséhez .txt az aktuális könyvtárban található, használja a következő parancsot:
$ találni. -name "*.txt" -print
Az aktuális könyvtárban minden olyan fájl megkereséséhez, amelynek a neve legalább egy karaktert tartalmaz nagybetűs, írja be a következő parancsot:
$ találni. -név "*" -nyomtatás
Keresse a katalógusban /stb"" karakterrel kezdődő fájlok házigazda", engedélyezi a parancsot
$ find /etc -name "hoat*" -print
Keresse meg a kezdőkönyvtárban az összes kiterjesztésű fájlt .txt, valamint azokat a fájlokat, amelyek neve ponttal kezdődik, a parancs hozza létre
$ find ~ -name "*.txt" -print -o -name ".*" -print
választási lehetőség -O a logikai VAGY művelet jelölése. Ha alkalmazza, a rendszeres nevű fájlok mellett olyan fájlok is megtalálhatók, amelyek neve ponttal kezdődik.
Ha listát szeretne kapni a rendszeren lévő összes fájlról, amelynek nincs kiterjesztése, akkor futtassa a következő parancsot, de legyen óvatos, mert jelentősen lelassíthatja a rendszert:
$ find / -name "*" -print
Az alábbiakban bemutatjuk, hogyan lehet megtalálni az összes olyan fájlt, amelyek nevét először kisbetű követi, majd két szám és egy kiterjesztés .txt(Például, ax37.xt):
$ találni. -név » [a-x] [a-x] . txt" -print
A -perm opció lehetővé teszi a megadott hozzáférési móddal rendelkező fájlok megkeresését. Például hozzáférési móddal rendelkező fájlok kereséséhez 755 (bármely felhasználó megtekintheti és végrehajthatja, de írási joga csak a tulajdonosnak van) a következő parancsot kell használnia:
$ találni. -perm 755 -print
A mód értékének kötőjellel történő előtagja a többi bit figyelmen kívül hagyásával megkeresi azokat a fájlokat, amelyekben az összes megadott engedélybit be van állítva. Például a következő parancs olyan fájlokat keres, amelyekhez más felhasználók teljes hozzáféréssel rendelkeznek:
$ találni. -perm -007 -nyomat
Ha a mód értékét pluszjel előzi meg, akkor a keresés olyan fájlok után történik, amelyek legalább egy megadott engedélybittel rendelkeznek, míg a többi bitet figyelmen kívül hagyja.
Ha nem szeretne egy adott könyvtárban keresni, használja a -prune kapcsolót. Jelzésként szolgál a keresés leállítására az aktuális elérési útvonalon. Ha az elérési út egy könyvtárra mutat, a find parancs nem megy bele. Ha a -depth opció megvan, a -prune opció figyelmen kívül marad.
A következő parancs az aktuális könyvtárban keres alkönyvtárba való belépés nélkül /kuka:
$ találni. -name "bin" -prune -o -print
Egy adott felhasználó tulajdonában lévő fájlok megkereséséhez adja meg a -user kapcsolót a find parancsban a felhasználónévvel együtt. Például a kezdőkönyvtárban a felhasználó tulajdonában lévő fájlok keresése Dave a következő paranccsal történik:
$ find ~ -user dave -print
Katalógus keresés /stb felhasználó tulajdonában lévő fájlok uucp, végrehajtja a következő parancsot:
$ find /etc -uaer uucp -print
A -nouser opció lehetővé teszi a nem létező felhasználók tulajdonában lévő fájlok keresését. Használata során olyan fájlokat keresnek, amelyek tulajdonosai nem rendelkeznek bejegyzéssel a fájlban. /etc/passwd. Nem kell konkrét felhasználónevet megadni: a find parancs elvégzi helyetted az összes szükséges munkát. Megkeresheti az összes olyan fájlt, amely nem létező felhasználók tulajdonában van és egy könyvtárban található /itthon, adja ki a következő parancsot:
$ find /home -nouaer -print
A -group és -nogroup opciók megegyeznek az opciókkal -user-nouser/apps a csoportfelhasználók tulajdonában lévő összes fájlhoz cselekszik:
$ find /arra -group accta -print
A következő parancs a teljes rendszerben megkeresi a nem létező csoportokhoz tartozó fájlokat:
$ find / -nogroup -print
Az elért fájlok keresésekor a -mtime kapcsolót kell használni x napja. Ha az opció argumentum „-” jellel van ellátva, akkor a rendszer kijelöli azokat a fájlokat, amelyekhez egy ideig nem fértek hozzá. x napok. A '+' jellel ellátott argumentum az ellenkező eredményhez vezet - az utolsó során elért fájlok kiválasztása. x napok.
Az elmúlt öt napban nem frissített összes fájl megkereséséhez használja a következő parancsot:
$ find / -mtime -5 -print
A következő parancs a könyvtárban való kereséshez /var/admin az elmúlt három napban frissített fájlok:
$ find /var/adm -mtime +3 -print
Ha olyan fájlokat kell keresnie, amelyeket két adott fájl frissítése között értek el, használja a -newer kapcsolót. Alkalmazásának általános formátuma a következő:
újabb régi_fájl! -újabb új fájl
aláír ! ‘ a logikai tagadó operátor. Ez azt jelenti: keressen meg olyan fájlokat, amelyek újabbak, mint régi_fájl de régebbi mint új fájl.
Tegyük fel, hogy két olyan fájlunk van, amelyeket kicsivel több mint két nap eltéréssel frissítettek:
Rwxr-xr-x 1 gyökérgyökér 92. április 18. 11:18 age.awk
-rwxrwxr-x 1 gyökérgyökér 1054 ápr. 20. 19:37 belts.awk
A későbbiekben frissített összes fájl megtalálásához kor.awk, de előtte övek.awk, futtassa a következő parancsot (az -exec kapcsoló használatával az alábbiakban olvasható):
$ találni. -újabb kor.awk ! -újabb belts.awk -exec Is -1 () ;
-rwxrwxr-x 1 gyökérgyökér 62. április 18. 11:32 ./who.awk
-rwxrwxr-x 1 gyökérgyökér 49. április 18. 12:05 ./group.awk
-rw-r-r- 1 gyökérgyökér 201. április 20. 19:30 ./grade2.txt
-rwxrwxr-x 1 gyökérgyökér 1054 ápr. 20. 19:37 ./belts.awk
De mi van akkor, ha meg kell találnia például az elmúlt két órában létrehozott fájlokat, és nincs pontosan két órája létrehozott fájl, amellyel összehasonlíthatná? Hozzon létre egy ilyen fájlt! Erre a célra a touch -t parancsot használjuk, amely egy adott időbélyeggel ellátott fájlt hoz létre MMDChhmm (hónap-nap-óra-perc) formátumban. Például:
$ touch -t 05042140 dstamp
$ ls -1 dbélyeg
-rw-r-r- 1 dave admin 0 május 4. 21:40 dstamp
Az eredmény egy olyan fájl lesz, amelynek létrehozási dátuma május 4, a létrehozás ideje -21:40 (feltételezve, hogy az aktuális idő 23:40). Most már használhatja a find parancsot a -newer kapcsolóval, hogy megkeresse az elmúlt két órában frissített fájlokat:
$ találni. -újabb datamp -print
OS UNIXÉs Linux támogatás Különféle típusok fájlokat. A kívánt típusú fájlok megkeresése a find paranccsal történik a -type kapcsolóval. Például egy könyvtár összes alkönyvtárának megkereséséhez /stb használja ezt a parancsot:
$ find /etc -type d -print
Az összes fájl listázásához, de a könyvtárakhoz nem, futtassa a következő parancsot:
$ találni. ! -type d -print
A következő parancs az összes szimbolikus hivatkozás megkeresésére szolgál egy könyvtárban /stb.
$ find /etc -type 1 -print
A keresés során a fájl mérete a -size kapcsolóval adható meg N, Ahol N- a fájl mérete 512 bájtos blokkban. A lehetséges argumentumok jelentése a következő: +N- a megadott méretnél nagyobb fájlok keresése, -N- a megadottnál kevesebb N- egyenlő a megadottal. Ha az argumentum emellett a szimbólumot is tartalmazza Val vel, akkor a méretet bájtokban, nem blokkban megadottnak tekintjük, és ha a karakter k- kilobájtban. 1 MB-nál nagyobb fájlok kereséséhez használja a parancsot
$ találni. -aize -flOOOK -print
A következő parancs a könyvtárban keres /home/apache pontosan 100 bájt méretű fájlok:
$ talál /home/apache -sixe 100s -print
10 blokknál (5120 bájtnál) nagyobb fájlok kereséséhez használja a következő parancsot:
$ találni. -méret +10 -nyomat
A -depth opció lehetővé teszi a keresés megszervezését oly módon, hogy először az aktuális könyvtár minden fájlja (és rekurzív módon az összes alkönyvtár) kerül ellenőrzésre, és csak a végén - magának a könyvtárnak a bejegyzése. Ezt az opciót széles körben használják, amikor a cpio vagy a tar paranccsal szalagra archiválandó fájlok listáját készítik, mivel ebben az esetben először a könyvtár képét írják a szalagra, és csak utána állítják be a jogosultságokat. Ez lehetővé teszi a felhasználó számára, hogy archiválja azokat a könyvtárakat, amelyekhez nincs írási jogosultsága.
A következő parancs felsorolja az aktuális könyvtár összes fájlját és alkönyvtárát:
$ találni. -name "*" -print -o -name ".*" -print -depth
Így nézhet ki munkájának eredménye:
./.Xdefaults ./.bash_logout ./.bash_profile ./.bashrc ./.bash_nistory ./file ./Dir/file ./Dir/file2 ./Dir/file3 ./Dir/Subdir/file4 ./Dir/Subdir ./dir
A find parancs -mount opciója biztosítja a fájlok keresését csak az aktuális fájlrendszeren, kivéve a többi csatolt fájlrendszert. A következő példa az összes kiterjesztésű fájlt megkeresi .xc az aktuális lemezpartícióban:
$ find / -name "*.xc" -mount -print
A cpio parancsot elsősorban fájlok szalagra írására és olvasására használják. Nagyon gyakran a find paranccsal együtt használatos, és a fájllistát egy csövön keresztül kapja meg tőle.
Így írható a könyvtártartalom szalagra /stb, /itthonÉs /apps:
$ cd /
$ find etc home appa -depth -print | cpio -ov > dev/rmtO
választási lehetőség -O A cpio parancs beállítja a fájlok szalagra írásának módját. választási lehetőség -v (bőbeszédű- verbális mód) utasítja a cpio parancsot, hogy jelentsen minden feldolgozott fájlt.
Figyeljük meg, hogy a vezető '/' hiányzik a könyvtárnevekből. Ez beállítja az archivált könyvtárak relatív elérési útjait, amelyek az archívumból való későbbi fájlok beolvasásakor lehetővé teszik, hogy az operációs rendszer bármely részében újra létrejöjjenek, és nem csak a gyökérkönyvtárban.
Tegyük fel, hogy megtalálta a szükséges fájlokat, és bizonyos műveleteket szeretne végrehajtani velük. Ebben az esetben az -exec opcióra van szükség (egyes rendszerek csak az ls vagy ls -1 parancsokat engedélyezik az -exec kapcsolóval). Sok felhasználó az -exec opciót használja a törölni kívánt régi fájlok megkeresésére. Azt javaslom, hogy először futtasd az ls-t az rm helyett, hogy biztosan megtalálja a törölni kívánt fájlokat.
Az -exec opció után adja meg a végrehajtandó parancsot, majd kapcsos zárójelet, szóközt, fordított perjelet és végül pontosvesszőt. Vegyünk egy példát:
$ találni. -type f -exec Xa -1 () ;
-rwxr-xr-x 10 gyökérkerék 1222, 1993. január 4./sbin/C80
-rwxr-xr-x 10 gyökérkerék 1222, 1993. január 4./sbin/Normál
-rwxr-xr-x 10 gyökérkerék 1222, 1993. január 4./sbin/Rewid
Ez normál fájlokat keres, amelyek az ls -1 paranccsal jelennek meg a képernyőn.
Nem frissített fájlok keresése egy könyvtárban /naplók az elmúlt öt napon belül, és távolítsa el őket, futtassa a következő parancsot:
$ find /log" -type f -mtime +5 -exec rm () ;
Fájlok mozgatásakor és törlésekor körültekintően kell eljárni. Használja az -ok opciót, amely lehetővé teszi az mv és rm parancsok futtatását biztonságos mód(a következő fájl feldolgozása előtt megerősítési kérés kerül kiadásra). A következő példában a find parancs megkeresi a kiterjesztésű fájlokat .log, és ha egy fájl öt napnál régebbi, akkor törli, de először kéri a művelet megerősítését:
$ találni. -name "*.LOG" -mtime +5 -ok rm() ;
< rm … ./nets.LOG >? nál nél
Fájl törléséhez írja be nál nélés ennek megakadályozása érdekében - n.
Nézzünk még néhány példát a find parancs használatának illusztrálására. Az alábbiakban bemutatjuk, hogyan találhatja meg az összes fájlt a saját könyvtárában:
$ talál ~ -nyomat
Keresse meg az összes olyan fájlt, amelyhez bit be van állítva SUID, a következő parancs lehetővé teszi:
$ találni. -típusú f -perm +4000 -print
Az üres fájlok listájának megtekintéséhez használja a következő parancsot:
$ find / -type f -size 0 -exec Is -1 () ;
Az egyik rendszeremen minden nap rendszernapló készül. A naplófájl nevéhez egy szám kerül, amely lehetővé teszi, hogy azonnal megállapítható legyen, hogy melyik fájl készült később és melyik korábban. Például fájlverziók admin.log sorszámozva: admin.log.001, admin.log.002 stb. A következő a find parancs, amely eltávolítja az összes fájlt admin.log több mint hét napja létrehozva:
$ find /logs -name 'admin.log.1 -atima +7 exec rm () ;
Az -exec kapcsolóval a find parancs az összes talált fájlt átadja a megadott parancsnak, amelyek egy menetben feldolgozódnak. Sajnos egyes rendszerekben a hossz parancs sor korlátozott, ezért nagyszámú fájl feldolgozásakor hibaüzenet jelenhet meg, amely általában a következő: "Túl sok vita"(túl sok érv) ill Az érvek túl hosszúak(túl nagy érvlista). Ebben a helyzetben a xargs parancs segít. a find parancsból kapott fájlokat részletekben dolgozza fel, és nem egyszerre.
Vegyünk egy példát, ahol a find parancs a rendszer összes fájljának listáját adja vissza, az xargs parancs pedig végrehajtja rajtuk a file parancsot, amely ellenőrzi az egyes fájlok típusát:
$ find / -type f -print I xarge.file
/etc/protocols: angol szöveg /etc/securetty: ASCII szöveg
A következő példa bemutatja, hogyan kereshet olyan dump fájlokat, amelyek nevét az echo parancs elhelyezi a fájlban /tmp/core.log.
$ find / -name core -print | xarge echo > /tmp/core.log
A következő példában a könyvtárban /apps/audit megkeresi az összes fájlt, amelyhez más felhasználók teljes hozzáféréssel rendelkeznek. chmod parancsot eltávolítja az írási jogosultságukat:
$ find /appe/audit -perm -7 -print | xarge chmod o-w
A listát egy példával egészítjük ki, amelyben a grep parancs a " szót tartalmazó fájlokat keresi eszköz«:
$ find / -type f -print | xarge grep "eszköz"
A find parancs nagyszerű eszköz a különféle fájlok megkereséséhez különféle kritériumok alapján. Az -exec opciónak, valamint az xargs parancsnak köszönhetően a talált fájlokat szinte bármilyen rendszerparancs feldolgozhatja.
Bármilyen operációs rendszerben végzett munka közben néha szükség van eszközök használatára gyors keresés egyik vagy másik fájl. Ez a Linuxra is vonatkozik, így az alábbiakban mindenről lesz szó. lehetséges módjai fájlok keresése ebben az operációs rendszerben. Eszközként kerül bemutatásra fájl kezelő, valamint a -ban használt parancsokat "Terminál".
Ha sok keresési paramétert kell beállítania a kívánt fájl megtalálásához, akkor a parancsot megtalálja pótolhatatlan. Mielőtt az összes változatát megvizsgálnánk, érdemes végigmenni a szintaxison és az opciókon. A következő szintaxissal rendelkezik:
útvonal keresése lehetőséget
Ahol pálya az a könyvtár, amelyben a keresés megtörténik. Három fő útlehetőség van:
Közvetlenül megadhatja magának a könyvtárnak az elérési útját is, amelyben a fájlnak el kell helyezkednie.
Lehetőségek megtalálja nagyon sok, és nekik köszönhető, hogy megvalósítható rugalmas konfiguráció keressen a szükséges változók beállításával:
Sokféle szükséges elem is létezik. Íme a listájuk:
A parancs szintaxisának és opcióinak részletes elemzése után megtalálja közvetlenül a szemléltető példákhoz ugorhat. A parancshasználati lehetőségek bősége miatt nem minden változóra adunk példát, hanem csak a leggyakrabban használt változókra.
A felhasználók leggyakrabban a rendszerben való keresés lehetőségét használják. -név, tehát itt kezdjük. Nézzünk néhány példát.
Keresés kiterjesztéssel
Tegyük fel, hogy meg kell találnia egy kiterjesztésű fájlt ".xlsx", amely a könyvtárban található csepp doboz. Ehhez a következő parancsot kell használnia:
keresse meg a /home/user/Dropbox -name "*.xlsx" -print
Szintaxisából azt mondhatjuk, hogy a keresés a könyvtárban történik csepp doboz ("/home/user/Dropbox"), és a kívánt objektumnak a kiterjesztéssel együtt kell lennie ".xlsx". A csillag azt jelzi, hogy a keresés ennek a kiterjesztésnek az összes fájlján végrehajtódik, függetlenül azok nevétől. "-nyomtatás" azt jelzi, hogy a keresési eredmények megjelennek.
Keresés fájlnév szerint
Például egy könyvtárban szeretne keresni "/itthon" nevű fájlt "csomók", de kiterjesztése ismeretlen. Ebben az esetben a következőket kell tennie:
meg ~ -name "lumpics*" -print
Amint látja, az itt használt szimbólum «~» , ami azt jelenti, hogy a keresés a kezdőkönyvtárban történik. Opció után "-név" meg van adva a keresett fájl neve ( "csomók*"). A végén lévő csillag azt jelenti, hogy a keresés csak név szerint történik, a kiterjesztés figyelembevétele nélkül.
Keresés a név első betűje szerint
Ha csak a fájlnév első betűjére emlékszik, van egy speciális parancsszintaxis, amely segít megtalálni. Például olyan fájlt szeretne találni, amely a következő betűvel kezdődik "g" előtt "l", és nem tudja, melyik könyvtárban van. Ezután a következő parancsot kell futtatnia:
find / -name "*" -print
A közvetlenül a főparancs után megjelenő „/” karakter alapján a keresés a gyökérkönyvtárból indulva, vagyis az egész rendszerben történik. Következő rész «*» azt jelenti, hogy a keresett szó egy bizonyos betűvel kezdődik. Esetünkben től "g" előtt "l".
Egyébként, ha ismeri a fájl kiterjesztését, akkor a szimbólum után «*» megadhatod. Például meg kell találnia ugyanazt a fájlt, de tudja, hogy a kiterjesztése van ".odt". Ezután használhatja ezt a parancsot:
find / -name "*.odt" -print
Néha meg kell találnia egy objektumot, amelynek a nevét nem ismeri, de tudja, hogy milyen hozzáférési módja van. Ezután alkalmaznia kell a lehetőséget "-perm".
Használata meglehetősen egyszerű, csak meg kell adnia a keresés helyét és a hozzáférési módot. Íme egy példa egy ilyen parancsra:
talál ~ -perm 775 -print
Ez azt jelenti, hogy a keresés az otthoni partíción történik, és a keresett objektumok hozzáférést kapnak 775 . E szám elé írhatja a "-" szimbólumot is, ekkor a talált objektumok nullától a megadott értékig jogosultsági bitekkel rendelkeznek.
Minden operációs rendszernek vannak felhasználói és csoportjai. Ha olyan objektumot szeretne találni, amely e kategóriák valamelyikébe tartozik, használhatja ezt a lehetőséget "-felhasználó" vagy "-csoport", ill.
Fájl keresése a felhasználónév alapján
Például meg kell találnia a könyvtárban csepp doboz fájlt Lámpák, de nem tudod, mi a neve, csak tudod, hogy a felhasználóé "felhasználó". Ezután a következő parancsot kell futtatnia:
keresse meg a /home/user/Dropboxot -felhasználó felhasználó-nyomtatás
Ebben a parancsban megadta a szükséges könyvtárat ( /home/user/Dropbox), jelezte, hogy meg kell keresnie a felhasználó tulajdonában lévő fájlt ( -felhasználó), és jelezte, hogy melyik felhasználóhoz tartozik ez a fájl ( felhasználó).
Fájl keresése a csoport neve alapján
Egy bizonyos csoporthoz tartozó fájl keresése ugyanolyan egyszerű - csak módosítania kell a beállítást "-felhasználó" opciónként "-csoport"és adja meg ennek a csoportnak a nevét:
find / -groupe guest -print
Vagyis jelezte, hogy a rendszerben egy olyan fájlt szeretne találni, amely a csoporthoz tartozik "vendég". A keresés az egész rendszerben történik, ezt a szimbólum jelzi «/» .
Egy bizonyos típusú Linuxban egy bizonyos elem megtalálása meglehetősen egyszerű, csak meg kell adnia a megfelelő opciót ( -típus) és jelölje meg a típust. A cikk elején felsoroltuk az összes kereshető típusmegjelölést.
Például meg szeretné találni az összes blokkfájlt a saját könyvtárában. Ebben az esetben a parancs így fog kinézni:
meg ~ -type b -print
Ennek megfelelően jelezte, hogy fájltípus szerint keres, amit az opció is bizonyít "-típus", majd meghatározta a típusát a blokkfájl szimbólummal - "b".
Ugyanígy megjelenítheti a kívánt könyvtárban található összes könyvtárat, ha beírja a parancsba a szimbólumot "d":
keresse meg a /home/user -type d -print fájlt
Ha csak a méretét tudja egy fájlról, akkor még ez is elég lehet a megtalálásához. Például, ha egy 120 MB-os fájlt szeretne találni egy bizonyos könyvtárban, tegye a következőket:
keresse meg a /home/user/Dropbox -méret 120M -nyomtatását
Amint látja, megtaláltuk a szükséges fájlt. De ha nem tudja, hogy melyik könyvtárban van, kereshet a teljes rendszerben, ha megadja a gyökérkönyvtárat a parancs elején:
Find / -Size 120M -print
Ha ismeri a fájl hozzávetőleges méretét, akkor erre az esetre van egy speciális parancs. Be kell írni "Terminál" ugyanaz, de a fájlméret megadása előtt tegyen egy jelet «-» (ha a megadott méretnél kisebb fájlokat szeretne találni) ill «+» (ha a keresett fájl mérete nagyobb, mint a megadott). Íme egy példa egy ilyen parancsra:
keresse meg a /home/user/Dropbox +100M -print
Vannak esetek, amikor a legjobb, ha a módosítás dátuma alapján keres egy fájlt. Linuxon ez az opcióval történik "-mtime". Használata meglehetősen egyszerű, nézzünk meg mindent egy példával.
Mondjuk egy mappában "Képek" meg kell találnunk az elmúlt 15 napban módosított objektumokat. Íme, mit kell beleírni "Terminál":
keresse meg a /home/user/Images -mtime -15 -print
Amint láthatja, ez az opció nem csak a megadott időszak alatt megváltozott fájlokat jeleníti meg, hanem a mappákat is. Ellenkező irányban is működik - olyan objektumokat találhat, amelyeket a megadott időszak után módosítottak. Ehhez egy jelet kell beírni a digitális érték elé «+» :
keresse meg a /home/user/Images -mtime +10 -print
A grafikus felület nagyban megkönnyíti a kezdők életét, akik most telepítették Linux disztribúció. Ez a módszer A keresés nagyon hasonlít a Windows kereséséhez, bár nem biztos, hogy biztosítja az összes előnyt "Terminál". De először a dolgok. Tehát nézzük meg, hogyan lehet fájlkeresést végezni Linux alatt GUI rendszerek.
Most megvizsgáljuk a fájlok keresésének módját a Linux rendszermenüjén keresztül. A lépéseket az Ubuntu 16.04 LTS disztribúcióban hajtják végre, de az utasítások mindenki számára közösek.
A find parancs az egyik leghasznosabb és legfontosabb parancs a Linuxon.
Alapértelmezés szerint telepítve van, és szinte mindegyiken elérhető Linux verziók. A Linux mindent fájlként tárol, és nyilvánvalóan érdemes tudni, hogyan találja meg ezeket a fájlokat.
A find paranccsal egy sor keresési feltétel segítségével megkeresheti az érdeklődésre számot tartó fájlokat. A kritériumok együtt vagy külön-külön is megadhatók, majd az eredménnyel műveleteket hajthatnak végre. Ebben az oktatóanyagban a find parancsot használati példákkal ismertetjük.
Az aktuális könyvtárban és alkönyvtáraiban található összes fájl listázásához használhatjuk a következőket:
Alternatív megoldásként használhatjuk a 'find . ' , ami ugyanazt az eredményt adja.
Ha csak könyvtárakat kell keresnie, használhatja:
$ találni. -d típusú
Ha csak fájlokat szeretne keresni, könyvtárakat nem:
$ találni. -típus f
Fájlok keresése egy adott könyvtártípusban:
$ find /root
Ez a parancs megkeresi az összes fájlt a /root könyvtárban.
Ha egy fájlt név szerint szeretne keresni egy adott könyvtárban, írja be:
$ find /root -name "linuxtechi.txt"
Ez a parancs megkeresi a linuxtechi.txt fájlt a /root könyvtárban. Ezenkívül megtaláljuk az összes .txt kiterjesztésű fájlt:
$ find /root -name "*.txt"
Ha több könyvtárban szeretne fájlokat keresni, írja be:
$ find /root /etc -name "linuxtechi.txt"
Ezzel a paranccsal megkereshetjük a linuxtechi.txt fájlt a /root & /etc könyvtárakban.
Ezzel a paranccsal megtalálhatjuk a linuxtechi.txt fájlt a /root és /etc könyvtárban.
Fájlok keresése a kis- és nagybetűktől eltérő módon a -name paranccsal:
$ find /root -name "Linuxtechi.txt"
Ennek eredményeként az összes linuxtechi.txt nevű fájlt megkapja. Ebben az esetben több fájl is lehet, mivel a linuxtechi.txt megegyezik a LINUXTECHI.txt fájllal.
Tegyük fel, hogy egy bizonyos fájltípuson kívül minden fájlt meg akarunk találni. Ennek eléréséhez írja be:
$ find /root -not -name "*.txt"
Fájlok keresésekor több feltételt is kombinálhatunk. Tegyük fel, hogy szükségünk van .txt és .html kiterjesztésű fájlokra:
$ találni. -regex ".*\.\(txt\|html\)$"
Több keresési feltételt is kombinálhatunk, ami az egyik feltétel teljesülése alapján a fájlok keresését eredményezi. Ez az OR operátor használatával történik:
$ find -name "*.txt" -o -name "linuxtechi*"
Adott engedélyekkel rendelkező fájlok kereséséhez használja a -perm parancsot:
$ find /root -type f -perm 0777
A kereséshez rejtett fájlok a könyvtárba írja be:
$ keresés ~ -type f név ".*"
Az SGID bitekkel rendelkező fájlok kereséséhez futtassa a következő parancsot:
$ találni. -perm /g=s
A SUID bitekkel rendelkező fájlok kereséséhez használja:
$ találni. -perm /u=s
Csak keresésre futtatható fájlok belép:
$ találni. -perm /a=x
Ezenkívül a find paranccsal csak olvasható fájlokat találhat:
$ find /root -perm /u=r
Ha egy adott felhasználóhoz szeretne fájlokat keresni, használja a következő parancsot:
$ találni. - linuxtech felhasználó
Egy adott csoporthoz tartozó fájlok kereséséhez használja:
$ találni. -csoportos apache
Ha azt szeretnénk keresni, hogy kinek a méretét ismerjük, akkor használhatjuk a -size-t:
$ find / -size -2M
Ha olyan fájlt keresünk, aminek a méretét nem ismerjük, de tudjuk a hozzávetőleges méretét, vagy csak egy bizonyos mérettartományban szeretnénk fájlokat kiválasztani, akkor megadhatjuk:
$ megtalál / -méret +2M -méret -5M
Használhatja a find parancsokat, ha például 50 mb-nál nehezebb fájlokat keres:
$ talál / -méret +50M
Például meg akarjuk találni az összes 8 nappal ezelőtt módosított fájlt. Ezt a find parancs '-mtime' opciójával érhetjük el
Például megtaláljuk az összes 8 napja szerkesztett fájlt. Ez a -mtime paranccsal történik:
$ find / -mtime 8
Megtalálhatja azokat a fájlokat, amelyek 8 nappal ezelőtt szerepeltek az -atime-val:
$ find / -atime 8
A rendszerben lévő összes üres fájl megkereséséhez írja be:
$ find / -type f -empty
A könyvtáraik megjelenítéséhez:
$ find ~/ -type d -empty
A legnagyobb vagy legkisebb fájlok listájának megjelenítéséhez a find -ot használjuk a sort együtt, és ha 3 "legnagyobb" listát kell megadnunk, akkor a head -et is használjuk.
Az aktuális könyvtár három fájljának megjelenítéséhez írja be:
$ találni. -type f -exec ls -s () \; | sort -n -r | fej-3
Hasonlóképpen felsorolhatjuk az aktuális könyvtár legkisebb fájljait is:
$ találni. -type f -exec ls -s () \; | sort -n | fej-3
A find parancs speciális használati eseteket kínálhat. Például 644 bizonyos fájl összes engedélyét módosíthatjuk 777-re. Ehhez a következőt hajtjuk végre:
$ find / -type f -perm 644 -print -exec chmod 777 () \;
Előbb-utóbb előfordulhat, hogy törölnie kell bizonyos fájlokat. Ha ez megtörténik, írja be:
$ find / -type f -name "linuxtechi.*" -exec rm -f () \;
A fenti példák tökéletesen demonstrálják a find parancs erejét, amely nagyban leegyszerűsítheti a fájlok keresését.
A fájlok keresésének szükségessége szinte minden operációs rendszerben felmerülhet, amely lehetővé teszi a munkát fájlrendszer. A klasszikus példa számunkra az operációs rendszer Linux, amelyet konzol módban fogunk használni. Nézzük meg a fájlok konzolon keresztüli keresésének lehetőségeit a rendszerben. Fájlok kereséséhez Linux rendszeren van egy find parancs, amely meglehetősen rugalmas keresést tesz lehetővé, lehetővé téve további keresési feltételek megadását. Tekintsük részletesebben ennek a parancsnak a képességeit.
Parancs szintaxis keresése:
Az elérési út -opciók keresése
Az elérési út megadja azt a könyvtárat, amelyben keresni kell. Például ezek lehetnek a következő értékek:
. - aktuális könyvtár
/ - gyökérkönyvtár
~ - kezdőkönyvtár
Az elérési út megadása után így kerülnek megadásra a keresési lehetőségek. Zavarba ejtőnek tűnik, de valójában nincsenek nehézségek.
Fő lehetőségek:
-név- név szerinti keresés, keresési minta beállítva;
-felhasználó- egy adott felhasználóhoz tartozó fájlok keresése;
-csoport- meghatározott csoporthoz tartozó fájlok keresése;
-perm- fájlok keresése hozzáférési mód szerint;
-típus- fájlok keresése típus, típuslista szerint:
-méret- n egység méretű fájlok keresése;
-mtime -n +n- Fájlok keresése a módosítás dátuma szerint, kevesebb (-) vagy több (+) nappal ezelőtt.
Próbáljunk meg fájlokat keresni, különféle helyzeteket szimulálva.
Keressük meg a fájlokat egy USB-hez csatlakoztatott és a rendszerbe előre beépített cserélhető eszközön.
Fájlok keresése kiterjesztés szerint:
$ keresse meg a /mnt/usb -name "*.mp3" -print
Ez a parancs keresni fogja a könyvtárat /mnt/usb az a könyvtár, ahová az eszköz fel van szerelve. A keresés az összes (*) kiterjesztésű fájlon végrehajtódik .mp3.
A keresési maszk meglehetősen rugalmasan módosítható, például beállíthatunk egy kulcsszót, amellyel a fájlnév kezdődik, és rákereshetünk.
Fájlok keresése kezdő kulcsszó szerint:
$ find ~ -name "config*" --print
Ez megjeleníti a talált fájlok listáját, kezdve a kulcsszó config.
A parancs egyik erőssége a reguláris kifejezések szerinti keresés lehetősége. A bemutatáshoz keressünk a következővel kezdődő fájlokat Latin betűk"a"-tól "j"-ig.
Fájlok keresése minta szerint reguláris kifejezés:
$ find / -name "*" --print
A megadott minta szerint a rendszer minden fájlját keresni fogja, amelyek "a" és "j" betűkkel kezdődnek.
Aki többé-kevésbé ismeri a Linux rendszereket, tudja, hogy a fájlelérési módok nagyon fontosak. Néha olyan fájlokat kell találnia, amelyeknek meghatározott engedélyei vannak, erre a célra használhatja a keresést az opcióval -perm.
Fájlok keresése 755-ös hozzáférési móddal:
$ találni. -perm 775 --print
Ugyanígy rugalmasabb keresést is végezhet. Keressük meg felhasználói csoportonként azokat a fájlokat, amelyek teljes hozzáféréssel rendelkeznek.
Egy csoporthoz engedéllyel rendelkező fájlok keresése:
$ találni. -perm -070 --print
A kötőjel helyettesíthető pluszjellel, ez azokat a fájlokat keresi, amelyeknek legalább egy adott engedélybitje be van állítva, a többi bitet figyelmen kívül hagyja.
A következő példában fontolja meg egy adott felhasználó vagy csoport tulajdonában lévő fájlok keresését.
Egy adott felhasználó fájljainak keresése:
$ find / -user admin --print
A keresés megkeresi a felhasználó tulajdonában lévő fájlokat admin.
Adott felhasználói csoporthoz tartozó fájlok keresése:
$ find / -group bots --print
A rendszer megtalálja a felhasználói csoporthoz tartozó fájlokat botok. Ezenkívül kereshet nem létező felhasználók vagy csoportok tulajdonában lévő fájlok között:
$ find / -nouser –print $ find / -nogroup –print
A bizonyos típusú fájlok keresésének képessége szintén fontos funkció. Például, ha meg kell találni az összes szimbolikus hivatkozást egy adott könyvtárban.
Szimbolikus linkek keresése:
$ find /etc -type l --print
A keresés a /etc könyvtárban történik, amelyben az összes szimbolikus hivatkozás ki lesz jelölve.
Néha meg kell tekinteni a beágyazott könyvtárak listáját bármelyik könyvtárban, az ilyen feladatokhoz a következő parancs található.
Beágyazott könyvtárak megtekintése egy könyvtárban:
$ talál /mnt/usb -type d --print
A képernyőn megjelenik a könyvtárban található könyvtárak listája. /mnt/usb. Most térjünk át a következő lehetőségre, ez a beállított méretű fájlok keresésének lehetősége.
Fájlok keresése méret szerint:
$ találni. -méret 2000k --nyomtatás
A 2000 kilobájt méretű fájlok keresése történik, a méretek megabájtban is megadhatók, ehhez a „k” betű helyett az „M” betűt kell feltüntetni.
Következő példaként a fájlok módosítási idejük szerinti keresésének lehetőségét fogjuk használni. Erre a célra az opciót fogjuk használni -mtime.
Az elmúlt 2 napban módosított fájlok keresése:
$ find /var/www/html -mtime +2 --print
A keresés a könyvtárban történik /var/www/html, és az elmúlt 2 napban megváltozott fájlok keresése történik. Talán az egyik legfontosabb és legkényelmesebb keresési lehetőség. A módosítás dátuma szerint is kereshet fordított állapot. Próbáljunk meg olyan fájlokat keresni egy olyan könyvtárban, amelyek 5 napja nem változtak.
Olyan fájlok keresése, amelyek 5 napja nem változtak:
$ find /var/www/html -5 --print
Egyelőre ennyi, remélem, ezek a példák segítettek kezelni ezt a parancsot. Kényelme egyértelműen bemutatásra kerül, és nem lesz felesleges tudni a képességeiről, különösen, ha dolgozni fog Linux rendszer. A hozzáértő fájlkeresés készségei személyes időt takarítanak meg, és mint tudod, az idő megfizethetetlen. Sikereket a munkában!