Linux:Přehled základních příkazů: Vyhledávání

Z Wikiknih

Přejít na: navigace, hledání

Tato stránka je kandidát na rychlé smazání. Důvod: obsah stránky byl přesunut do obsahu kapitoly Linux:Vyhledávání

Pokud nesouhlasíte s tím, aby tato stránka byla smazána, odkaz na šablonu {{Smazat}} odstraňte a své důvody objasněte na diskusní stránce.

Správci – Před smazáním nezapomeňte ověřit, jestli sem jiné stránky neodkazují a zkontrolovat historii stránky.


Obsah

[editovat] Vyhledávání souborů a aplikací

[editovat] find

Příkaz pro vyhledávání v souborovém stromu s možností mnoha následných akcí.

Příkaz find, jak se z názvu zdá, by měl sloužit k vyhledávání. To je taky pravda, ale to je jen část jeho dovedností. Představme si jej na několika příkladech.

$ find

Základní verze bez parametrů vypíše seznam všech souborů a adresářů v aktuálním adresáři, a to rekurzívně - tedy i vnořené adresáře a soubory.

$ find /etc

Prvním, nepovinným parametrem je výchozí adresář pro prohledávání. V následujících příkladech ho budu vynechávat, abych si ušetřil psaní. .o)

$ find -name soubor.txt

Hledá soubor zadaného názvu. Najde-li jej, vypíše jej i s cestou. Pokud ne, nevypíše nic.

$ find -name "*txt"

Vypíše všechny soubory, jejichž název končí txt. Všimněte si uvozovek, zadáváte-li "globbing" hvězdičky.

$ find -type d

Vypíše jen soubory typu directory, tedy adresáře.

$ find -type f -exec chmod 664 {} \;

A tohle je moje oblíbené použití. S nalezenými soubory je možno pracovat dále tak, že jsou předhozeny nějakému příkazu. V našem případě jsou všechny soubory typu soubor (file) předány (pomocí těch složených závorek) příkazu chmod, který jim nastaví práva na 664. Příkaz je nutné ukončit středníkem, který je nutné "escapovat" obráceným lomítkem, Složené závorky jsou postupně nahrazovány nalezenými názvy souborů.

$ find -name "*~" -exec rm -i {} \;

Smaže záložní kopie - soubory jejichž název končí vlnovkou. Pro sichr tam je parametr -i, který znamená, že každé mazání budeme muset potvrzovat zvlášť.

$ find . -type f -exec fgrep -Hn kolo {} \;

Vyhledá "kolo" v obsahu všech souborů v aktualním adresáři a výsledek vytiskne ve formátu: cesta_k_souboru:cislo_radky:nalezeny_retezec

$ find /moje/zalohy -type f -ctime +30 -exec rm -f {} \;

Projede adresář zalohy a smaže tam všechny soubory (type -f), které jsou staré víc než 29 dní.

[editovat] locate

Potřebujete-li opravdu jen vyhledávat, může se vám hodit příkaz

$ locate

Je děsně rychlý, protože nehledá v souborovém systému, ale v databázi. Tu je ovšem třeba udržovat aktuální. O to se stará příkaz

# updatedb

který, jak vidíte, smí spouštět jen root. Abyste na to nemuseli myslet, můžete využít cron a - vypínáte-li počítač - anacron.

[editovat] whereis

Hledá binární soubory, zdrojové soubory a manuálové stránky. Příklad:

$ whereis find
find: /usr/bin/find /usr/X11R6/bin/find /usr/bin/X11/find /usr/share/man/man1/find.1.gz

Spustitelné (binární) soubory jsou ty první tři údaje. Ten poslední je cesta k manuálové stránce.

[editovat] which

Zobrazí cestu k příkazu:

$ which find
/usr/bin/find

Hodí se, když se nám zdá, že program nedělá to, na co jsme zvyklí. Takto můžeme zjistit, že se nám spouští něco jiného. Je to ale dost raritní situace. Ale výše jsme si všimli, že kupř. příkaz find bydlí ve třech různých lokacích, pak nás může zajímat, který z nich (Anglicky which) se spouští.

Příkaz which má volitelný parametr -a, který vypíše všechna umístění zadaného příkazu.

$ which -a whereis
/usr/bin/whereis
/usr/bin/X11/whereis

[editovat] Vyhledávání vzorků v souborech

[editovat] grep

[editovat] Vyhledávání uživatelů

[editovat] Vyhledávání v instalačních balíčcích