A Linux egy rendkívül hatékony operációs rendszer, amely számos eszközt kínál a fájlok és könyvtárak kezelésére. Az egyik leggyakrabban használt feladat a fájlok és könyvtárak rekurzív keresése. Ez azt jelenti, hogy egy adott könyvtárból kiindulva, az összes alkönyvtárát is bejárjuk, hogy megtaláljuk a kívánt fájlokat vagy könyvtárakat. Ebben a cikkben részletesen bemutatjuk, hogyan valósíthatjuk ezt meg különböző eszközökkel.
A find
parancs
A find
parancs a Linux egyik legerősebb eszköze a fájlok és könyvtárak keresésére. Lehetővé teszi, hogy különböző kritériumok alapján keressünk fájlokat, például név, méret, dátum vagy tulajdonos alapján. A rekurzív kereséshez alapértelmezés szerint alkalmas.
Alapvető használat
A find
parancs alapvető szintaxisa a következő:
find [könyvtár] [kritériumok]
Ha a [könyvtár]
paramétert nem adjuk meg, akkor a parancs az aktuális könyvtárban fog keresni. A [kritériumok]
paraméter segítségével pontosíthatjuk a keresést.
Például, ha az összes .txt
fájlt szeretnénk megtalálni az aktuális könyvtárban és annak alkönyvtáraiban, akkor a következő parancsot használhatjuk:
find . -name "*.txt"
Ebben a parancsban a .
jelenti az aktuális könyvtárat, a -name "*.txt"
pedig azt, hogy a nevek illeszkedjenek a *.txt
mintára.
További kritériumok
A find
parancs számos egyéb kritériumot is támogat, amelyek segítségével még pontosabban szűrhetjük a találatokat.
-type f
: Csak fájlokat keres.-type d
: Csak könyvtárakat keres.-size +1M
: Az 1 megabájtnál nagyobb fájlokat keresi.-mtime -7
: A legutóbbi 7 napban módosított fájlokat keresi.-user [felhasználónév]
: A megadott felhasználó által birtokolt fájlokat keresi.
Például, ha az összes könyvtárat szeretnénk megtalálni az /opt
könyvtárban, akkor a következő parancsot használhatjuk:
find /opt -type d
Műveletek a találatokkal
A find
parancs nem csak a fájlok és könyvtárak keresésére alkalmas, hanem arra is, hogy műveleteket végezzünk a találatokkal. Ehhez a -exec
opciót használhatjuk.
Például, ha az összes .txt
fájlt törölni szeretnénk az aktuális könyvtárban és annak alkönyvtáraiban, akkor a következő parancsot használhatjuk:
find . -name "*.txt" -exec rm {} ;
Ebben a parancsban a {}
helyére a find
parancs a megtalált fájlok nevét helyettesíti, a ;
pedig a -exec
opció végét jelzi.
Fontos! A -exec rm {} ;
parancs használata rendkívül veszélyes lehet, ha nem megfelelően használjuk. Mindenképpen győződjünk meg arról, hogy pontosan tudjuk, mit csinálunk, mielőtt futtatnánk.
A grep
parancs a fájlok tartalmában való kereséshez
A grep
parancs egy másik hasznos eszköz a Linux rendszerben, amely lehetővé teszi, hogy fájlok tartalmában keressünk. Bár a grep
önmagában nem keres rekurzívan a könyvtárakban, kombinálhatjuk a find
paranccsal, hogy rekurzívan keressünk egy adott szövegmintát a fájlok tartalmában.
Például, ha az összes .txt
fájlban szeretnénk megtalálni a „Linux” szót, akkor a következő parancsot használhatjuk:
find . -name "*.txt" -exec grep "Linux" {} ;
Ez a parancs először a find
parancs segítségével megkeresi az összes .txt
fájlt, majd a grep
parancs segítségével megkeresi a „Linux” szót minden egyes fájlban.
A grep
parancsnak számos opciója van, amelyek segítségével pontosíthatjuk a keresést. Például:
-i
: Nem tesz különbséget a kis- és nagybetűk között.-n
: Megmutatja a sor számát, ahol a minta megtalálható.-r
: Rekurzívan keres a könyvtárakban (de általában a find parancsot használjuk erre a célra).
A locate
parancs
A locate
parancs egy gyorsabb alternatíva a find
parancshoz, de van egy fontos különbség: a locate
egy adatbázist használ a fájlok és könyvtárak kereséséhez. Ez azt jelenti, hogy a locate
parancs csak azokat a fájlokat és könyvtárakat fogja megtalálni, amelyek szerepelnek az adatbázisban.
Az adatbázist rendszeresen frissíteni kell a updatedb
parancs segítségével. Az adatbázis frissítése rendszergazdai jogosultságokat igényel.
A locate
parancs használata egyszerű:
locate [fájlnév]
Például, ha az összes .txt
fájlt szeretnénk megtalálni, akkor a következő parancsot használhatjuk:
locate "*.txt"
Azonban fontos megjegyezni, hogy a locate
parancs nem fogja megtalálni azokat a fájlokat, amelyek nem szerepelnek az adatbázisban. Ezért a find
parancs általában megbízhatóbb választás, különösen akkor, ha új fájlokat keresünk.
Összegzés
A Linux számos eszközt kínál a fájlok és könyvtárak rekurzív keresésére. A find
parancs a legerősebb és legrugalmasabb eszköz, amely lehetővé teszi, hogy különböző kritériumok alapján keressünk fájlokat és könyvtárakat, és műveleteket végezzünk a találatokkal. A grep
parancs a fájlok tartalmában való keresésre alkalmas, és kombinálható a find
paranccsal a rekurzív kereséshez. A locate
parancs egy gyorsabb alternatíva, de csak azokat a fájlokat és könyvtárakat fogja megtalálni, amelyek szerepelnek az adatbázisban. Remélhetőleg ez a cikk segített megérteni, hogyan használhatjuk ezeket az eszközöket a Linux rendszerben.