4 skvělé nástroje pro rychlé vyhledávání souborů v Ubuntu

Mnozí z vás, uživatelů Ubuntu, jistě znají nástroj „Vyhledávání souborů“, který umožňuje vyhledávat soubory. Stejně jako u většiny věcí v Linuxu, i zde existují skvělé nástroje na ploše, ale větší výkon lze nalézt v Terminálu, než jaký může mít jakýkoli zjednodušený nástroj na ploše.

Dnes bych vás rád seznámil s několika nástroji, které mohou z obtížného hledání souborů udělat snadný proces.

locate

První nástroj, se kterým byste se měli seznámit, je zároveň jedním z nejjednodušších. Program locate funguje podobně jako většina grafických vyhledávacích nástrojů.

Použití

Řekněme, že jste si přečetli, jak upravit program X, aby poskytoval vyšší výkon videa. V dokumentu, který čtete, se píše, že máte upravit soubor xorg.conf, ale v dokumentu není uvedeno, kde se nachází, a vy nevíte, jak ho najít. Můžete použít locate, který vám ho rychle najde:

$ 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

Je jasné, že /etc/X11/xorg.conf je soubor, který hledáme, ale co kdyby se vrátily desítky nebo dokonce stovky výsledků? Jak byste to všechno zvládli? Pokud víte něco málo o regulárních výrazech (základy by se měl naučit opravdu každý uživatel Linuxu), můžete regulární výrazy snadno použít k vyhledávání adresářů nebo souborů. Například můžeme hledat přesnou shodu pro xorg.conf pomocí následujícího příkazu:

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

Pokud chcete hledat soubory bez rozlišování velkých a malých písmen, můžete použít volbu -i. Například:

$ 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

Něco, co vás může zmást, když poprvé začnete používat příkaz locate, je to, že nevrací pouze shody, ale pokud je shodou adresář, vypíše také všechny adresáře a soubory pod tímto adresářem. Například:

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

Tento příkaz vrátí více než tisíc položek v mém systému. Chceme-li výsledky omezit na seznam položek, které odpovídají hledanému výrazu, bez všech obsažených souborů a adresářů, použijeme volbu -b:

$ 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

Stále je zde poměrně dost shod, ale už nemusíme třídit všechny další výsledky, abychom našli to, co hledáme.

Důležitá poznámka

Příkaz locate spoléhá při své funkci na databázi slocate. Tato databáze ukládá do mezipaměti názvy adresářů a souborů souborového systému a umožňuje příkazu locate pracovat během chvilky, místo aby prohledávání celého souborového systému trvalo dlouhou dobu.

Tato schopnost však není zadarmo. Ve výchozím nastavení systém jednou denně v 6:25 spustí příkaz pro aktualizaci této databáze. Tento příkaz aktualizuje databázi o všechny změny provedené v souborovém systému od poslední aktualizace.

Pokud jste nedávno provedli změny, například přidali nebo odstranili velké množství souborů a adresářů, a chcete použít příkaz locate k prohledání těchto nových adresářů a souborů, můžete databázi slocate kdykoli ručně aktualizovat následujícím příkazem:

$ sudo updatedb

V závislosti na objemu změn provedených od poslední aktualizace databáze slocate může aktualizace trvat několik sekund až několik minut. Jakmile je to hotovo, můžete znovu vyhledávat pomocí locate.

který

locate je skvělý pro prohledávání celého souborového systému. Někdy však chcete pouze najít místo, kde se příkaz nachází. Tehdy přichází na řadu which.

which dělá jen jednu věc, ale dělá ji dobře. Vzhledem k názvu příkazu vám řekne, kde se v souborovém systému nachází soubor pro tento příkaz.

Představme si, že chceme zjistit, kde se nachází příkaz firefox. Můžeme jednoduše spustit následující příkaz, abychom to zjistili:

$ which firefox/usr/bin/firefox

Proč byste vůbec chtěli hledat konkrétně nějaký příkaz? Představte si, že máte nějaký kód, který potřebuje nahradit starý příkaz. Opravdu musíte nejprve odstranit ten starý (já ho obvykle přejmenovávám na stejný název následovaný „.bak“, abych ho měl po ruce pro případ, že ho budu potřebovat), než na jeho místo vložíte nový. Příkaz which vám pomůže soubor snadno a rychle najít, abyste ho nemuseli hledat všude možně.

whereis

Příkaz whereis je podobný příkazu which, ale jde ještě o krok dál. Nejenže vám řekne, kde se spustitelný soubor nachází, ale vyhledá také zdrojový kód, manuálovou stránku a další související adresáře.

Pokračujeme-li v příkladu which, zeptejme se whereis na příkaz firefox:

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

Pomohl mi dříve najít /usr/lib/firefox/plugins při práci na řešení pro Flash, protože v tomto umístění jsou uloženy globální doplňky pro Firefox.

find

find je dokonalý vyhledávací nástroj, švýcarský armádní nůž linuxového vyhledávání, chcete-li. find Umí vše od vyhledávání souborů na základě časů posledních změn, vlastníků a skupin, oprávnění, typu (soubor, adresář, symbolický odkaz atd.), zda je soubor čitelný/zapisovatelný/spustitelný aktuálním uživatelem, velikosti souboru, zda je soubor nebo adresář prázdný a mnoho dalšího. Můžete také vyhledávat shody pomocí regulárních výrazů.

Při použití tohoto nástroje v kombinaci s příkazem xargs (kterému se budu muset věnovat někdy jindy) můžete na příkazovém řádku dělat opravdu úžasné věci. Představte si, že můžete rekurzivně prohledávat aktuální adresář a hledat v něm soubory končící na „.bak“, které byly naposledy změněny před více než 100 dny, a pak je jedním příkazem smazat:

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

Zpočátku to bude vypadat velmi složitě, ale až si osvojíte umění používat příkaz find, stane se to vaší druhou přirozeností. Brzy se budete divit, jak jste bez něj vůbec mohli něco hledat.

Přímo řečeno, je toho mnohem víc, než jsem ochoten popsat, a existuje mnoho a mnoho skvělých úvodů do tohoto nástroje, které odvádějí lepší práci, než bych odvedl já. Proto vás jednoduše odkážu na tři skvělé odkazy, které lze použít pro začátek práce s příkazem find.

  • Příklad použití linuxového příkazu find
  • (předem se omlouvám za příšerné barvy) Unix/Linux „find“ Command Tutorial
  • Použití příkazu find

Šťastné hledání.

Pomohl jsem vám?

  • Pošlete mi tip přes Paypal.
  • Pomozte s hostingem tohoto webu pomocí mého referenčního kódu Linode.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.