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:
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:
- 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
- Fájlok keresése típus szerint
- Keressen újabb fájlokat
- Fájl keresése és törlése
- Keressen egy könyvtárat
- Fájlok keresése a módosítási idő szerint
- Fájlok keresése engedéllyel
- Fájlok keresése és cseréje
- Szöveg keresése több fájlban
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:
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:
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:
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:
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:
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:
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:
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:
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.