...

Hogyan keressünk és találjunk meg fájlokat egyszerűen

A modern operációs rendszerek sok fájlt tárolnak. Nem ritka, hogy az egy felhasználóval rendelkező operációs rendszer is több mint 100 000 fájlt tárol a lemezén. Ez azt jelenti, hogy gyakorlatilag minden számítógép lemeze szénakazal lesz, és minden olyan fájl, amelyet nem szervezetten tároltunk (amire még emlékszünk), a közmondás szerint tűvé válik.

Szerencsére számos eszköz létezik, amelyek segítenek meg lehet találni a fájlokat a számítógépünkön. A megfelelő eszköz attól függ, hogy milyen fájlt szeretnénk megtalálni, és milyen paramétereket adhatunk meg, amelyek segítenek a rendszer megtalálja az adatainkat.

Azokban az esetekben, amikor ismerjük a program nevét, például ls, grep vagy systemctl, de nem ismerjük a könyvtárat, akkor a which paranccsal találhatjuk meg. A which parancs megtalálja mekünk a program nevét és megadja nekünk a teljes elérési útját, az alábbiak szerint:

which grep
/bin/grep

 

Azokban az esetekben, amikor ismerjük a fájlnév egy részét, de a helyét nem, sőt a teljes nevét sem, a legtöbb disztribúciónál használhatjuk a locate parancsot a hasonló nevű fájlok megkeresésére. Tegyük fel, hogy valami olyan dokumentumot szeretnék találni, amelynek nevében szerepel a "tax" kifejezés. Bármelyik fájlt megkereshetem a következő módon:

locate tax

A fenti parancs a következő nevű fájlokat adja vissza:

/usr/share/yelp-xsl/js/jquery.syntax.js
/usr/include/netax25
/home/steve/Documents/income-tax.ods

 

Az esélye annak, hogy az az egyetlen fájl jelenjen meg a fenti listában, amit szeretnénk megtalálni, nagyon kevés. Tehát ha több tucat vagy száz találatot kapunk, akkor a grep paranccsal szűrhetjük a találatokat. Például a következő parancs megkeresi azokat a fájlokat is, amelyekben az "tax" kifejezés szerepel, de ezután az eredményeket leszűrve csak a saját könyvtáramban jelenít meg eredményeket:

locate tax | grep /home/steve

 

Ebben a következő példában az összes olyan dalt szeretném megtalálni a számítógépemen, amelynek címében szerepel a "love" szó. A "love" kulcsszó sok rendszerfájlban megjelenik, ezért módosítom a locate parancsot, hogy csak azokat az elemeket jelenítse meg, amelyeket a Music mappámban talál:

locate love | grep Music

Ebben az esetben hiányoltam néhány olyan bejegyzést, amelyeket gondoltam, hogy meg kellene jelenniük, és kiderült, hogy mivel a Linux fájlnevek megkülönböztetik a kis- és nagybetűket, ezen a helyen nem olyan dalokat talált, amelyekben a "Love" vagy "LOVE" volt a cím, csak a "love". Ennek kijavításához használhatjuk az "-i" paramétert arra, hogy a locate figyelmen kívül hagyja a kis- és nagybetűk érzékenységét.

locate -i love | grep Music

A locate parancsnak az az előnye, hogy nagyon gyors. Gyorsan visszaadja az eredményeket, mert futtatásakor nem a lemezen elérhető fájlokat vizsgálja, hanem az időszakosan frissülő fájlnevek adatbázisát. Ez azt jelenti, hogy a locate ideális egy vagy annál régebbi információk megtalálásához, és megfelő a helyes fájlnevek megtalálásához, de nem hasznos vadonatúj fájlok vagy meghatározott jellemzőkkel rendelkező fájlok megtalálásához. Az ilyen speciális esetekben a find parancsot tudjuk használni.

 

A find parancs egy adott helyen, ahol a fájlokat keresünk, úgynevezett "flag"-el szűkíthetjük a találatokat. A névben egy adott karaktersorozattal rendelkező fájl megkereséséhez használhatjuk a "-iname" paramétert. Például itt a ".html" kiterjesztésű fájlokat keresem a Documents könyvtárban. A "*" bármely karakterrel megegyezik, így ez a példa minden olyan fájlt talál, amelynek neve ".html"-re végződik:

find ~/Documents -iname "*.html"

Fájlokat kereshetünk az alapján is, hogy mikor módosították őket utoljára. Ez akkor hasznos, ha új fájlokat keresünk, amelyeket hozzá kívánunk adni egy biztonsági másolathoz. Például find parancs megkeresi az home könyvtárunk összes fájlját, amelyek az elmúlt hét napban lette létrehozva vagy módosítva:

find ~/ -mtime -7

A "-7" ebben az esetben azt jelenti, hogy a fájlokat kevesebb mint hét nappal ezelőtt változtattuk meg. Megfordíthatjuk a logikát, és egy hétnél régebbi fájlokat kereshetünk a "+7" használatával:

find ~/ -mtime +7

A find paranccsal a fájlok azalapján is megtalálhatók, hogy mely jogosúltságokkal rendelkeznek. Az jogosultságokat átadják, hogy megtalálják ugyanúgy, ahogy továbbítják őket a chmod-nak. Különösen hatékonyak azoknál a programoknál, amelyek futtatásukkor megőrzik a root jogosultságokat, és szeretnénk tudni, hogy van-e közülük valamelyik a rendszeren. A speciális futtatható fájlok, például a sudo és a firejail, akkor jelennek meg, amikor a beállított felhasználói identitás (setuid) jogosultságokkal rendelkező programokat keresünk. Itt kereshetünk setuid programokat:

find /usr -perm -4000

 

A /usr könyvtár teljes keresése valószínűleg hosszú időt venne igénybe. Szűkíthetjük a keresést csak a felhasználó útvonalára (azokra a helyekre, ahol a rendszer programokat keres) a következő keresés végrehajtásával:

find $(echo $PATH | tr ':' ' ') -perm -4000

A fenti parancs kiszűri a kettőspont karaktereket a felhasználó PATH változójából, és az útvonalban szereplő helyeket felhasználva szűkíti a hatékony setuid programok keresését, amelyek felhasználhatók a jogosultságok módosítására.

A find parancs lehetővé teszi több paraméter használatát. Például kombinálhatjuk a karakterek karakterláncainak keresését és a módosítási időket. Ez a példa a Documents könyvtárban keresi az egy hétnél nem régebbi új szöveges (txt) fájlokat:

find ~/Documents -mtime -7 -iname "*.txt"

A fenti parancs különösen hasznos, ha tudjuk, hogy nemrégiben hoztunk létre egy fájlt, de teljesen elfelejtettük a nevét.

Forrás: Distrowatch.com

Hozzászólások(0)

A hozzászóláshoz be kell jelentkezned.

Bejelentkezeés