logo

Keresse meg a parancsot Linux/Unix rendszerben példákkal

A find parancs segít megtalálni egy adott fájlt egy könyvtárban. A fájlok listájának megkeresésére szolgál a különféle feltételekhez, például engedély, felhasználói tulajdonjog, módosítás, dátum/idő, méret stb.

A Unix-szerű és más operációs rendszerekben a find parancs egy parancssori segédprogram, amely néhány felhasználó által megadott formátum alapján megkeresi a fájlokat, és vagy kiírja az összes egyező objektum elérési útját, vagy ha más műveleteket kér, végrehajtja ezt a műveletet minden egyező objektum.

Keresést indít egy kiindulási helyről, majd ezt követően rekurzívan bejárja egy hierarchikus struktúra (általában egy fa) könyvtárait (csomópontjait). A find parancs a kezdőkönyvtárban lévő egyetlen vagy több tárolóeszközhöz tartozó különböző fájlpartíciós rendszerekben kereshet és járhat be.

A keresési formátum tartalmaz egy mintát a fájlnévvel vagy a módosítási idővel vagy a fájl hozzáférési idejével való egyeztetéshez. A find parancs alapértelmezés szerint az aktuális munkakönyvtárban található összes fájl listáját tartalmazza. A felhasználók azonban korlátozhatják a keresést a kívánt maximális szintre a kezdőkönyvtárban.

A társított helymeghatározó programok a fine parancsból nyert indexelt fájladatbázist alkalmaznak, hogy gyorsabb technikát biztosítsanak a teljes fájlrendszer név szerinti kereséséhez.

A kereső segédprogram alapértelmezés szerint a legtöbb Linux disztribúciók , így nem kell további csomagot telepítenünk. Ez az egyik legfontosabb és leghasználtabb parancs a Linux rendszer.

 find 

A két lehetőség határozza meg, hogy a keresés hogyan vegye figyelembe a szimbolikus hivatkozásokat. Az alapértelmezett természet soha nem követi a szimbolikus kapcsolatokat. A zászló, azaz -L , a keresést szimbolikus linkek követésére fogja vezetni. A zászló, azaz -H , csak szimbolikus hivatkozásokat keres, miközben folytatja a parancssori argumentumokat. A zászlókat a POSIX szabvány tartalmazza a find parancshoz. Az alapkiterjesztés egy zászló, azaz -P , a következő szimbolikus hivatkozás kifejezett letiltásához.

Legalább egy útvonalnak meg kell előznie a kifejezést. A find parancs képes belsőleg értelmezni a helyettesítő karaktereket, és a parancsokat gondosan idézni kell a shell globbing kezeléséhez.

A kifejezési összetevőket a parancssori argumentumhatárok választják el, általában szóközként jelölve a shell szintaxisában. Bal oldalról jobbra tekintik őket. Tartalmazhatnak logikai összetevőket, például VAGY és ÉS, valamint predikátumokat (műveleteket és szűrőket). A GNU find számos olyan szolgáltatást tartalmaz, amelyeket a POSIX nem említett.

A következő szimbólumok adják meg a könyvtárat:

(.) : Az aktuális könyvtárnévhez

(/) : A gyökérkönyvtárhoz

A Find Command rövid története

A find parancs a Unix 5-ös verziójában a Programozói munkaasztal projektet, és a Dick Haight cpio-val, amelyeket együtt történő használatra fejlesztettek ki.

Eredetileg a find parancs GNU megvalósítását a Eric Decker . Később fejlesztette ki David MacKenzie, Tim Wood , és Jay Plett . Ezenkívül a find parancs az IBM i operációs rendszerre lett portolva.

hány nulla van 1 milliárdban

Predikátumok

A széles körben használt primerek a következők:

    - név minta:Ellenőrzi, hogy a fájlnév megegyezik-e a megadott shell-glob mintával vagy sem.-típus típusa:Ellenőrzi, hogy a fájl megadott típusú-e.-nyomtatás:Mindig az igazi értéket adja. Kiírja az aktuális fájlnevet és egy újsort az stdout-ba.-print0:Mindig az igazi értéket adja. Kiírja az aktuális fájlnevet és egy null karaktert az stdout-ba. A POSIX-nek nincs szüksége.-exec program [argumentum ...];:Mindig az igazi értéket adja. A rögzített argumentumokkal és az aktuális fájl elérési úttal végrehajt egy programot.-exec program [argumentum ...] { } +:Mindig az igazi értéket adja. A rögzített megadott argumentumokkal és minél több útvonallal hajt végre egy programot. Szinte minden implementációnál a többi {} előfordulás az adott név többletmásolatát jelenti (a POSIX számára nem szükséges szempont).-ok program [érv ...];:Ez ugyanaz, mint az -exec, de hamis vagy igaz értéket ad vissza, ha a program 0-t ad.

Keresse meg a -print megvalósításának alapértelmezéseit abban az esetben, ha a feltételek igazak, ha a kifejezés nem használja az -ok, -exec, -print vagy -print0 egyikét sem.

Üzemeltetők

Az operátorok javítják a keresési parancs kifejezéseit. Megemlítésük csökkenő sorrendben történik:

    (kif):Ez az operátor kikényszerítheti az elsőbbséget.! kifejez:Ha az expr értéke hamis, akkor igazat ad vissza.
  • expr1 expr2 (vagy expr1 -a expr2 : ÉS. A kif2 nem kerül kiértékelésre, ha az expr1 hamis.
  • kif1 -o kif2 : VAGY. A kif2 nem kerül kiértékelésre, ha az expr1 igaz.

Példák a keresési parancsra

Lássuk a következő példákat a find parancsra:

Fájlok keresése név szerint

Kereshetünk az összes '.txt' kiterjesztésű fájlban. Ehhez hajtsa végre az alábbi parancsot:

 find . -name '*.txt' 

A fenti parancs felsorolja az összes szövegfájlt az aktuális munkakönyvtárból. Vegye figyelembe az alábbi kimenetet:

Linux Find

A fenti kimenetből az összes '.txt' kiterjesztésű fájl megjelenik a find paranccsal.

Fájlok keresése típus szerint

A '-type' paraméter a fájltípus megadására szolgál.

Néhány fájltípus a következő:

  • f: normál fájl
  • d: könyvtár
  • l: szimbolikus linkek
  • c: karaktereszközök
  • b: blokkolja az eszközöket

Vegye figyelembe az alábbi parancsot:

np pont
 find . -type d -name '*.bak' 

A fenti parancs felsorolja az összes '.bak' kiterjesztésű könyvtárat. Vegye figyelembe az alábbi kimenetet:

Linux Find

A fenti kimenetből a „find . -type d -name A '*.bak' megjeleníti az összes '.bak'-re végződő könyvtárat.

Keressen újabb fájlokat

A '-newer' paraméter segít az említett fájlnál újabb fájlok keresésében. Vegye figyelembe az alábbi parancsot:

 find . -newer msg.txt 

A fenti parancs megjeleníti az összes fájlt, amely újabb, mint az 'msg.txt' az aktuális munkakönyvtárból. Vegye figyelembe az alábbi kimenetet:

Linux Find

A fenti kimenetből az összes megjelenített fájl újabb, mint az „msg.txt” fájl.

Fájl keresése és törlése

A '-delete' opció egy adott fájl törlésére szolgál. Nagyon óvatosnak kell lennünk ennek a parancsnak a használatakor, mert nincs visszavonási lehetőség, ha egyszer végrehajtják. Vegye figyelembe az alábbi parancsot:

 find . -name Demo.txt -delete 

A fenti parancs törli a „Demo.txt” fájlt az aktuális munkakönyvtárból. Vegye figyelembe az alábbi kimenetet:

Linux Find

Keressen egy könyvtárat

A 'type -d' opció a könyvtár keresésére szolgál. Vegye figyelembe az alábbi parancsot:

 find . type -depth -name Newdirectory 

A fenti parancs megkeresi az 'Newdirectory' helyet. Vegye figyelembe az alábbi kimenetet:

Linux Find

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

A '-mtime' opció, majd a napok száma, a fájlok módosítással történő megkeresésére szolgál. A napok száma lehet pozitív vagy negatív. A negatív érték kevesebb, mint az előző napnál használt -1, és hasonlóképpen a +1 is megtalálja a több mint egy nappal ezelőtti fájlt. Vegye figyelembe az alábbi parancsot:

 find ./Newdirectory -mtime -1 

A fenti parancs megkeresi az elmúlt napon módosított fájlokat. Vegye figyelembe az alábbi kimenetet:

Linux Find

Fájlok keresése engedéllyel

A '-perm' opció a fájlok engedély szerinti keresésére szolgál. Hajtsa végre a find parancsot a '-perm' opcióval, és adja át a szükséges értéket. Vegye figyelembe az alábbi parancsot:

 find ./ -perm 777 

A fenti parancs felsorolja azokat a fájlokat a megadott könyvtárból, amelyeket mindenki olvashat, írhat és végrehajthat.

karakterlánc összefűzése

Fájlok keresése és cseréje

A fájlok kereséséhez és cseréjéhez a find parancsot kombinálnunk kell a sed paranccsal. A fájlok kezeléséhez használja az '-exec' opciót a find paranccsal. Vegye figyelembe az alábbi parancsot:

 find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ; 

a fenti parancsból a megadott előfordulás lecserélődik. Vegye figyelembe az alábbi kimenetet:

Linux Find

Szöveg keresése több fájlban

A find parancs és a grep paranccsal egy másik kombinációját is elkészíthetjük, hogy megkeressük a szöveget a különböző fájlokból. Vegye figyelembe az alábbi parancsot:

 find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ; 

A fenti parancs megkeresi a 'demo' szöveget tartalmazó sorokat az 'Newdirectory' könyvtárban található összes szövegfájlból. Vegye figyelembe az alábbi kimenetet:

Linux Find

A fenti kimenetből láthatjuk, hogy a „demo” szövegű sorok megjelentek.

Keresés minden könyvtárban

 $ find / -name file1 -type f -print 

A fenti parancs megkeresi egy normál fájl összes könyvtárát, amelynek címe file1, és kiírja a képernyőre. Általában nem jó ötlet ilyen módon keresni a fájlokat. Jó sok időbe telhet. Tehát a legjobb, ha megemlíti a könyvtárat. Néhány operációs rendszer olyan (dinamikus) fájlrendszereket csatlakoztathat, amelyek nem kedveznek a find parancsnak. A shell egyedi karaktereit tartalmazó bonyolultabb fájlneveket idézőjelbe kell zárni.