4 Great Tools to Find Files Quickly in Ubuntu

Az Ubuntu felhasználók közül sokan ismerik a “Search for Files” eszközt, amely lehetővé teszi a fájlok keresését. Mint a legtöbb dologra a Linuxban, itt is vannak nagyszerű asztali eszközök, de a Terminálban nagyobb teljesítményt találhatunk, mint amivel bármelyik áramvonalas asztali eszköz felveszi a versenyt.

Most szeretnék bemutatni néhány olyan eszközt, amelyekkel a fájlok keresésének fáradságos feladatát könnyűvé teheti.

locate

Az első eszköz, amellyel érdemes megbarátkoznia, egyben az egyik legegyszerűbb is. A locate program hasonlóan működik, mint a legtöbb grafikus keresőeszköz.

Használat

Tegyük fel, hogy utánaolvastál annak, hogyan módosíthatod az X-et a jobb videoteljesítmény érdekében. Az olvasott dokumentum szerint módosítani kell a xorg.conf fájlt, de a dokumentum nem mondja meg, hogy hol található, és nem tudja, hogyan találja meg. A locate segítségével gyorsan megkeresheted magadnak:

$ locate xorg.conf/etc/X11/xorg.conf/usr/share/man/man5/xorg.conf.5.gz/var/lib/x11/xorg.conf.md5sum/var/lib/x11/xorg.conf.roster

Az egyértelmű, hogy a /etc/X11/xorg.conf az a fájl, amit keresünk, de mi van akkor, ha több tucat vagy akár több száz találat érkezik vissza? Hogyan tudnád mindezt kezelni? Ha egy kicsit is ismeri a reguláris kifejezéseket (minden Linux-felhasználónak tényleg meg kellene tanulnia az alapokat), akkor könnyen használhatja a reguláris kifejezéseket könyvtárak vagy fájlok keresésére. Például a xorg.conf pontos egyezést kereshetjük a következő paranccsal:

$ locate -r '/xorg.conf$'/etc/X11/xorg.conf

Ha a nagy- és kisbetűk érzékenysége nélküli fájlokat szeretnénk keresni, akkor használhatjuk a -i opciót. Például:

$ locate -i 'monthly report'/home/chris/Documents/August Monthly Report.doc/home/chris/Documents/July Monthly Report.doc/home/chris/Downloads/latest monthly report.doc

Az locate első használatakor zavaró lehet, hogy nem csak találatokat ad vissza, hanem ha a találat egy könyvtár, akkor a könyvtár alatti összes könyvtárat és fájlt is felsorolja. Például:

$ locate Desktop/home/chris/Desktop/home/chris/Desktop/Head Shot.jpg/home/chris/Desktop/Skype.lnk/home/chris/Desktop/Steam.lnk...

Ez a parancs az én rendszeremen több mint ezer bejegyzést ad vissza. Ha a találatokat a keresési kifejezésnek megfelelő bejegyzések listájára csökkenthetjük az összes tartalmazott fájl és könyvtár nélkül, használjuk a -b opciót:

$ locate -b Desktop/home/chris/Desktop/home/chris/bin/recordSoundAndDesktop.sh/opt/HipChat4/lib/QtQuick/Controls/Styles/Desktop/usr/include/qt4/QtGui/QDesktopServices/usr/include/qt4/QtGui/QDesktopWidget/usr/lib/libreoffice/program/wizards/common/Desktop.py/usr/lib/libreoffice/share/gallery/computers/Computer-Desktop.png/usr/lib/python2.7/dist-packages/xdg/DesktopEntry.py/usr/lib/python2.7/dist-packages/xdg/DesktopEntry.pyc/usr/lib/python3/dist-packages/xdg/DesktopEntry.py/usr/lib/python3/dist-packages/xdg/__pycache__/DesktopEntry.cpython-35.pyc/usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Styles/Desktop/usr/share/kde4/apps/kio_desktop/DesktopLinks/usr/share/man/man3/File::DesktopEntry.3pm.gz/usr/share/perl5/File/DesktopEntry.pm/usr/share/sounds/KDE-Window-All-Desktops-Not.ogg/usr/share/sounds/KDE-Window-All-Desktops.ogg

Még mindig elég sok találat van, de már nem kell átválogatnunk az összes extra találatot, hogy megtaláljuk, amit keresünk.

Fontos megjegyzés

A locate parancs működéséhez egy slocate adatbázisra támaszkodik. Ez az adatbázis gyorsítótárazza a fájlrendszer könyvtár- és fájlneveit, és lehetővé teszi, hogy a locate parancs pillanatok alatt működjön, ahelyett, hogy hosszú ideig tartana a teljes fájlrendszerben való keresés.

Ez a képesség azonban nem jár ingyen. Alapértelmezés szerint a rendszer naponta egyszer, reggel 6:25-kor futtat egy parancsot ennek az adatbázisnak a frissítésére. Ez a parancs frissíti az adatbázist a fájlrendszerben a legutóbbi frissítés óta történt változásokkal.

Ha a közelmúltban változtatásokat hajtott végre, például nagy mennyiségű fájlt és könyvtárat adott hozzá vagy távolított el, és a locate paranccsal szeretné átnézni ezeket az új könyvtárakat és fájlokat, akkor a slocate adatbázist bármikor manuálisan frissítheti a következő paranccsal:

$ sudo updatedb

A slocate adatbázis legutóbbi frissítése óta történt változások mennyiségétől függően a frissítés néhány másodperctől néhány percig is eltarthat. Ha ez megtörtént, újra kereshetsz a locate segítségével.

amely

locate nagyszerűen alkalmas a teljes fájlrendszerben való keresésre. Néha azonban csak azt szeretnénk megtalálni, hogy hol található egy parancs. Itt jön a képbe a which.

which csak egy dolgot csinál, de azt jól csinálja. Megadja egy parancs nevét, és megmondja, hogy az adott parancs fájlja hol található a fájlrendszerben.

Tegyük fel, hogy meg akarjuk tudni, hol található a firefox parancs. Egyszerűen lefuttathatjuk a következőt, hogy kiderítsük:

$ which firefox/usr/bin/firefox

Miért akarnánk kifejezetten egy parancsot keresni? Képzeljük el, hogy van egy kódunk, amelynek le kell cserélnie egy régi parancsot. Először tényleg el kell távolítanod a régit (én általában átnevezem ugyanarra a névre, amelyet a “.bak” követ, hogy megmaradjon, ha szükségem lenne rá), mielőtt az újat a helyére tennéd. A which segít gyorsan és könnyen megtalálni a fájlt, így nem kell mindenhol keresgélni, hogy megtaláld.

whereis

A whereis parancs hasonló a melyikhez, de egy lépéssel tovább megy. Nemcsak azt mondja meg, hogy hol található a futtatható fájl, hanem a forrás, a man page és más kapcsolódó könyvtárakat is megkeresi.

A which példánál maradva, kérdezzük meg a whereis parancsot a firefox parancsról:

$ whereis firefoxfirefox: /usr/bin/firefox /usr/lib/firefox /etc/firefox /usr/share/man/man1/firefox.1.gz

Ez segített megtalálni a /usr/lib/firefox/plugins korábban, amikor a Flash megoldásán dolgoztam, mivel ezen a helyen tárolódnak a Firefox globális kiegészítői.

find

find a végső keresőeszköz, a Linux keresés svájci bicskája, ha úgy tetszik. A find mindent meg tud csinálni a fájlok keresésétől kezdve az utolsó módosítási időpontok, tulajdonosok és csoportok, jogosultságok, típus (fájl, könyvtár, szimbolikus hivatkozás stb.) alapján, hogy a fájl olvasható/írható/végrehajtható-e az aktuális felhasználó által, a fájl mérete, hogy a fájl vagy könyvtár üres-e, és még sok minden mást. A szabályos kifejezések alapján is kereshetünk találatokat.

Ha ezt az eszközt a xargs paranccsal kombinálva használjuk (amivel majd máskor kell foglalkoznom), akkor igazán elképesztő dolgokat tehetünk a parancssorban. Képzeld el, hogy képes vagy rekurzívan átkutatni az aktuális könyvtárat olyan “.bak” végződésű fájlok után, amelyeket több mint 100 nappal ezelőtt módosítottak utoljára, majd egyetlen paranccsal törölni őket:

$ find . -name '*.bak' -type f -mtime +100 -print0 | xargs -0 /bin/rm -f

Ez elsőre nagyon bonyolultnak tűnik, de ha elsajátítod a find használatának művészetét, második természeteddé válik. Hamarosan csodálkozni fogsz, hogyan kerestél valaha is dolgokat nélküle.

Az őszinteség kedvéért, sokkal több mindent lehet találni, mint amennyire én hajlandó vagyok kitérni, és sok-sok nagyszerű bevezető van az eszközről, amelyek jobb munkát végeznek, mint én. Így egyszerűen csak három nagyszerű referenciára fogok utalni, amelyek segítségével elindulhatsz a find használatával.

  • A Linux parancs find
  • (Előre is elnézést kérek a szörnyű színekért) Unix/Linux “find” parancs bemutató
  • A find parancs használata

Boldog keresést.

Segítettem?

  • Küldj nekem egy tippet Paypalon keresztül.
  • Segíts az oldal tárhelyén a Linode referral kódommal.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.