Tento článek probere, jak můžete najít soubory a adresáře v Linuxu. Budeme používat příkazy locate, find a grep. Každý příkaz je podrobně popsán níže.
Použili jsme Ubuntu 20.04 LTS k demonstraci procesu.
Použití příkazu Locate k vyhledání souborů a adresářů v Linuxu
Příkaz locate nabízí rychlejší výsledky při čtení databáze mlocate.db, která obsahuje všechny cesty k souborům ve vašem systému.
Instalovat vyhledejte
Pokud se zobrazí níže uvedená zpráva, musíte nainstalovat locate.
Příkaz pro instalaci locate je:
sudo apt-get install mlocate
Prvním krokem je zadání hesla. Po zadání hesla se spustí instalace.
Po instalaci je třeba aktualizovat vyhledávací databázi. Protože locate spoléhá na tuto databázi, musíte ji pravidelně aktualizovat, abyste zajistili efektivitu. K aktualizaci databáze mlocate potřebujete oprávnění superuživatele.
sudo updatedb
Vyhledávání souborů pomocí názvu souboru
Chcete-li vyhledat soubory podle jejich jmen, použijte následující příkaz:
locate {filename}
Budeme hledat soubor s názvem „textfile.txt“, takže příkaz bude:
locate textfile.txt
Výsledkem bude cesta k umístění vašeho souboru.
Ignorování rozlišování malých a velkých písmen
Ve výchozím nastavení lokalizujte dotazy procesů tak, aby se rozlišovala velká a malá písmena, což znamená, že textfile.txt a TEXTFILE.TXT budou ukazovat na různé výsledky vyhledávání.
Jak vidíte, TEXTFILE.TXT nelze najít.
Rozlišování malých a velkých písmen můžete ignorovat pomocí –i volba. Příkaz je:
locate –i {file name}
Jak můžete vidět, soubor byl nyní nalezen.
Použití příkazu find k vyhledání souborů a adresářů v Linuxu
Ve srovnání s lokalizací je hledání mnohem výkonnější, ale pomalejší. Je pomalejší, protože vyhledává soubory na disku. Nález je skvělý, že v Linuxu můžete najít soubory a adresáře na základě skupin uživatelů, kdy byly soubory upraveny nebo k nim přistupovat, oprávnění k souborům, data a velikosti.
Hledání souborů v aktuálním adresáři
Všechny soubory s určitým názvem ve vašem aktuálním adresáři můžete zobrazit pomocí následujícího příkazu:
find . -name {filename}
V aktuálním adresáři uvidíte všechny soubory, které mají název „textfile.txt“.
Hledání souborů v domovském adresáři
Chcete-li vyhledat soubory ve svém domovském adresáři, použijte /home . Příkaz bude:
find /home -name {filename}
Ve svém domovském adresáři uvidíte všechny soubory s názvem Hello.txt.
Ignorování rozlišování malých a velkých písmen
Ve výchozím nastavení se v dotazech na procesy rozlišují velká a malá písmena, což znamená, že hello.txt a Hello.txt budou ukazovat na různé výsledky vyhledávání.
Jak vidíte, hello.txt nebyl nalezen.
Chcete-li ignorovat rozlišování malých a velkých písmen, použijte následující příkaz:
find –iname {file name}
Jak můžete vidět na obrázku níže, hello.txt byl nalezen.
Hledání pomocí zástupných znaků
K vyhledávání souborů podle určitých kritérií můžete použít zástupné znaky. Hvězdička (* ) zástupný znak umožňuje porovnat instance znaku.
Níže uvedený příklad používá následující příkazy:
find . –name ‘*he’
Tento příkaz vypíše všechny názvy souborů končící na „he“
find . –name ‘he*’
Tento příkaz vypíše všechny názvy souborů začínající na „he“
Najít pomocí velikosti souboru
Chcete-li najít soubory podle velikosti, použijte:
find –size {filesize} –type f
Tento příkaz hledá soubory, které mají velikost 68 bajtů.
Chcete-li vyhledat soubory větší nebo menší než konkrétní velikost, přidejte „+ “ nebo „– ” na váš příkaz.
find –size -{filesize} –type f
Níže uvedený příklad hledá soubory menší než 512 bajtů.
Tento příkaz hledá soubory větší než 512 bajtů.
Najít soubory podle toho, kdy byly naposledy upraveny
Pomocí níže uvedeného příkazu vyhledejte soubory podle toho, kdy byly naposledy upraveny:
find -iname "*.txt" -mtime -60
Tento příkaz hledá soubory, které byly změněny za posledních 60 dní.
Najít adresáře
Chcete-li najít adresář, použijte příkaz:
find –name “{file name}” –type d
Jako výsledek vidíte cestu k adresáři.
Najít soubory pouze pro čtení
Chcete-li najít soubory pouze pro čtení, použijte příkaz
find / -perm /u=r
Všechny soubory pouze pro čtení můžete vidět v terminálu.
Použití příkazu Grep k vyhledání souborů a adresářů v Linuxu
Grep, Global Regular Expression Print se v Linuxu používá k vyhledání řetězců v konkrétním souboru. Pokud grep najde tyto znaky, vytiskne řádek. Příkaz je:
grep {string} {file name}
V níže uvedeném příkladu budeme hledat řetězec „is“ v souboru „textfile.txt“. Můžete vidět řádky, které obsahují „je“.
Tisk čísel řádků
Čísla řádků spolu s odpovídajícím řetězcem vytisknete pomocí:
grep {string} {filename} –n
Níže uvedený příklad vytiskne číslo řádku, kde se nachází řetězec „is“.
Invertovat shodu
Tato možnost vám umožní vytisknout čáry, které neodpovídají zadanému vzoru.
grep {string} {file name} –v
Níže uvedený příklad vytiskne řádek z textového souboru „textfile.txt“, který neobsahuje „je“.
Ignorování rozlišování malých a velkých písmen
Ve výchozím nastavení grep zpracovává dotazy způsobem rozlišujícím velká a malá písmena, což znamená, je a IS bude ukazovat na různé výsledky vyhledávání.
Jak vidíte, „IS“ nelze nalézt.
Pomocí následujícího příkazu ignorujte malá a velká písmena:
grep {string} {file name} –i
Rekurzivní vyhledávání
Grep vám ve výchozím nastavení neumožňuje prohledávat adresáře. Zobrazí se následující chyba:
V adresářích můžete vyhledávat pomocí:
grep {string} . –R
Níže uvedený příklad hledá řetězec „some“ v aktuálním adresáři.
V tomto článku jsme viděli, jak locate, find a grep funguje při hledání souborů a adresářů v Linuxu. Prošli jsme také několik případů, jak se používají.