Linux:Přehled základních příkazů: Vyhledávání
Z Wikiknih
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