Úvod
find
umožňuje vyhledávat konkrétní řetězec znaků pomocí rozhraní příkazového řádku Linuxu. Je to velmi praktický nástroj, protože není omezen na názvy souborů. Můžete jej použít k prohledání konkrétního místa, přidat možnosti pro ovládání chování vyhledávání a pomocí dalších příkazů mu sdělit, jak spravovat data, která najde.
Tento výukový program vám ukáže, jak vyhledat a spravovat soubory v systému Linux pomocí find
příkaz.
Předpoklady
- Přístup k oknu terminálu/příkazovému řádku
- Uživatelský účet s sudo privilegia
Základní syntaxe příkazu hledání
Základní syntaxe z find
příkaz používá následující formát:
find <options> <location> <expression> <action> <name>
- Umístění – Pokyn
find
kde začít hledat hledaný výraz. - Výraz – Řekne
find
jakou kategorii informací má hledat. - Akce – Aakce atribut provede příkaz ve výsledcích vyhledávání. Je to volitelný prvek.
- Jméno – Představuje řetězec textu (nebo jiná data), který hledáte.
- Možnosti – Tento atribut není povinným prvkem
find
příkaz. Lze jej použít ke kontrole chování a optimalizaci procesu vyhledávání.
Jak používat příkaz find
find
příkaz uvádí všechny výskyty řetězce znaků, který jste zahrnuli do vyhledávání. find
příkaz také umožňuje definovat parametry vyhledávání, možnosti a umístění s vysokou úrovní přesnosti.
Najít soubory podle umístění
Vyhledávání souborů na základě jejich řetězce umístění může být jednoduchý příkaz, například:
sudo find /home/user filename
Tento příkaz vyhledá uživatele účet na domovské stránce adresář. Pokud si nejste jisti, kam se chcete podívat, můžete umístění vyhledávání rozšířit.
Pokud máte například dva uživatelské účty a nepamatujete si, do kterého jste soubor uložili, můžete zadat:
sudo find /home filename
find
příkaz prohledá vše pod /home adresář (včetně všech uživatelských adresářů) pro hledaný výraz. V našem příkladu je hledaný výraz název souboru .
Použijte tečku .
pro vyhledání adresáře, ve kterém se aktuálně nacházíte:
sudo find .
Zadejte lomítko /
a váš systém prohledá celý pevný disk:
sudo find /
Znak vlnovky ~
se používá k prohledávání domovského adresáře aktuálního uživatele:
sudo find ~
Používejte výrazy s příkazem find
Výrazy aplikují další parametry na find
proces vyhledávání příkazů. Nejběžnějším výrazem je -name
. Tento výraz hledá umístění, které jste zadali pro soubor s názvem, který zadáte do název pole.
sudo find –name settings.txt
Systém vyhledá v aktuálním adresáři jakýkoli soubor s názvem settings.txt.
Systém zobrazuje pouze názvy souborů s přesnou shodou s hledanými výrazy. Toto omezení může způsobit problémy, pokud má název souboru například velká písmena.
Chcete-li říct find
chcete-li ignorovat velká/malá písmena, použijte –iname
výraz takto:
sudo find /home –iname filename
Systém prohledá /home adresář a vrátí cokoliv s názvem název souboru , Název souboru a dokonce FILENAM .
Použijte –type d
výraz pro určení, zda hledáte soubor nebo adresář:
sudo find . –type d –name Videos
Tento příkaz vyhledá v aktuálním adresáři (s tečkou) adresář s názvem „Videa .“
Ve výchozím nastavení find
vyhledává soubory, ale soubory můžete určit pomocí -type f
.
Zobrazit všechny soubory, které neobsahují hledaný název:
sudo find . -not filename
Vyhledejte soubory s danou úrovní oprávnění:
sudo find . -perm 0000
Vrátit seznam všech souborů vlastněných konkrétním uživatelským jménem:
sudo find . -user username
Zobrazit posledních 00 upravených souborů:
sudo find . -mtime 00
Číselná hodnota určuje počet souborů, které systém zobrazí. Zobrazit posledních 00 přístupných souborů:
sudo find . -atime 00
Zobrazit všechny soubory větší než 20 megabajtů:
sudo find . -size +20M
Terminál zobrazí seznam všech souborů, které odpovídají kritériím velikosti.
Příkazy odkazující na velikost hledaných položek lze použít jednotlivě k zobrazení všech souborů větších než určitá velikost, menších než určitá velikost nebo v definovaném rozsahu.
Najděte název nebo příponu
name
atribut definuje objekt vašeho hledání. find
nástroj přejde na zadané místo pro jakýkoli řetězec znaků, který zadáte. Název souboru, který hledáte, je obvykle na konci příkazu, za umístěním, možnostmi a výrazy.
Standardní písmena a číslice se zadávají jako řetězec znaků na konci příkazu. Speciální znaky – zástupný znak, tečka, lomítko atd. – vyžadují použití jednoduchých uvozovek kolem názvu. Jednoduché uvozovky zajišťují, že systém interpretuje požadavek správně.
Chcete-li vyhledat soubory s konkrétní příponou, například .html, zadejte následující příkaz nebo .php :
sudo find . –type f –name ‘*.html’
Systém vyhledává v aktuálním adresáři běžné soubory (type –f
) které mají příponu .php . V tomto případě hvězdička (* znak) se používá jako zástupný znak , což znamená, že může zastupovat libovolný počet znaků jakéhokoli typu.
Zástupné znaky jsou užitečné, pokud si pamatujete pouze část názvu souboru nebo hledáte soubory s určitou příponou.
Proveďte akce pomocí příkazu find
Viděli jsme, jak používat find
příkaz k zobrazení výsledků hledání v okně terminálu. Akce atribut může vylepšit tuto funkčnost a provést konkrétní úkol, jakmile je soubor umístěn.
Následující příkaz prohledává skutečný obsah souborů (místo pouze názvů souborů):
sudo find ~ –type f –exec grep “contents” ‘{}’ \; –print
- Žádáme systém, aby našel soubor (
-type f
) v domovském adresáři našeho uživatele (~
). - Nařídíme systému, aby provedl akci (
-exec
) spuštěnímgrep
příkaz pro vyhledání slova obsah v obsahu všech souborů . {}
závorky označují výsledky shodyfind
a jsou v jednoduchých uvozovkách, takžegrep
příkaz je nevykládá špatně.- Uzavřeme
grep
příkaz se středníkem (;
) a používáme zpětné lomítko (\
), aby si systém středník špatně nevyložil jako pokyn. - Nakonec
–print
volba říká systému, aby zobrazil výsledky.
Zkopírujte a vložte tento příkaz do okna terminálu a místo ~ nahraďte svou vyhledávací cestu znak a hledaný výraz pro slovo obsah.
Můžete použít find –exec
kombinaci pro rychlou změnu oprávnění souboru:
sudo find /path –name “filename.ext” –exec chmod 777 ‘{}’ \;
Tento příkaz používá –exec
příkaz ke spuštění chmod
změnit oprávnění k souboru název_souboru.přípona aby jej mohl číst, zapisovat a spouštět každý.
Vyhledejte a odstraňte soubory pomocí příkazu find
Pomocí –delete
můžete rychle najít a odstranit jeden nebo více souborů jedním příkazem.
V tomto příkladu find
odstraní všechny soubory, které končí příponou .html rozšíření.
sudo find . –name “*.html” –delete
Tento příkaz prohledá aktuální adresář (zobrazený v příkazovém řádku) pro všechny soubory s .html rozšíření a odstraňte je. Obrázek ilustruje jednoduchost procesu.
Tento typ akce je užitečný pro odstranění starých záložních souborů, pokud jste nahradili “*.bak“ místo “*.bmp“.
Přidejte možnosti k nalezení příkazu
Možnosti jsou speciální funkce vložené před cestu hledání v find
příkazový řetězec. -L
, -H
a -P
jsou volitelné prvky používané k ovládání manipulace se symbolickými odkazy.
–P
Tato možnost představuje výchozí chování. Systém nesleduje symbolické odkazy.-H
Systém nesleduje symbolické odkazy s výjimkou zpracování tohoto specifického příkazu.-L
Následuje symbolické odkazy. Informace jsou převzaty ze souboru, na který odkaz směřuje. Ne pro samotný odkaz.
Možnosti mohou změnit úroveň optimalizace vyhledávání. Existují tři (3) úrovně optimalizace, které definují, jak vyhledávací program organizuje vyhledávání a rychlost provádění tohoto vyhledávání.
- –O1 Tato úroveň optimalizace se používá ve výchozím nastavení. Nejprve se spustí vyhledávání na základě názvů souborů.
- –O2 vyhledávání podle typu se spouští hned po vyhledávání podle jmen. Než proběhnou další vyhledávání.
- –Vyhledávání O3 se provádějí za účelem maximalizace rychlosti. Bez ohledu na další prvky dotazu.