find command je jedním z nejmocnějších nástrojů v arzenálu správců systému Linux. Vyhledává soubory a adresáře v hierarchii adresářů na základě uživatelem zadaného výrazu a může provádět uživatelem specifikované akce s každým odpovídajícím souborem.
Můžete použít find k vyhledání souborů a adresářů na základě jejich oprávnění, typu, data, vlastnictví, velikosti a dalších. Lze jej také kombinovat s dalšími nástroji, jako je grep nebo sed .
find Syntaxe příkazu #
Obecná syntaxe pro find příkaz je následující:
find [options] [path...] [expression]
optionsatribut řídí zacházení se symbolickými odkazy, možnosti ladění a metodu optimalizace.path...atribut definuje počáteční adresář nebo adresáře, kde bude find hledat soubory.expressionatribut se skládá z možností, vyhledávacích vzorů a akcí oddělených operátory.
Chcete-li vyhledat soubory v adresáři, uživatel vyvolá find příkaz musí mít oprávnění ke čtení v tomto adresáři.
Podívejme se na následující příklad:
find -L /var/www -name "*.js" - Volba
-L(options) říkáfindpříkaz k následování symbolických odkazů. /var/www(cesta…) určuje adresář, který bude prohledán.- (výraz)
-name "*.jsříkáfindpro vyhledávání souborů končících na.js(JavaScriptové soubory).
Najít soubory podle názvu #
Hledání souborů podle názvu je pravděpodobně nejběžnější použití find příkaz. Chcete-li najít soubor podle názvu, použijte -name možnost následovaná názvem souboru, který hledáte.
Chcete-li například vyhledat soubor s názvem document.pdf v /home/linuxize adresář, použijete následující příkaz:
find /home/linuxize -type f -iname document.pdf
Chcete-li spustit vyhledávání bez rozlišení velkých a malých písmen, změňte -name možnost s -iname :
find /home/linuxize -type f -iname document.pdf Výše uvedený příkaz bude odpovídat „Document.pdf“, „DOCUMENT.pdf“ ..atd.
Najít soubory podle přípony #
Vyhledávání souborů podle přípony je stejné jako vyhledávání souborů podle názvu. Chcete-li například najít všechny soubory končící na .log.gz uvnitř /var/log/nginx adresář, zadejte:
find /var/log/nginx -type f -name '*.log.gz'
Je důležité zmínit, že musíte buď citovat vzor, nebo ukončit hvězdičku * symbol se zpětným lomítkem \ aby to nebylo interpretováno shellem, když použijete zástupný znak.
Chcete-li najít všechny soubory, které neodpovídají regulárnímu výrazu *.log.gz můžete použít -not volba. Chcete-li například najít všechny soubory, které nekončí na *.log.gz byste použili:
find /var/log/nginx -type f -not -name '*.log.gz' Najít soubory podle typu #
Někdy možná budete muset hledat konkrétní typy souborů, jako jsou běžné soubory, adresáře nebo symbolické odkazy. V Linuxu je vše soubor.
Chcete-li vyhledávat soubory podle jejich typu, použijte -type volba a jeden z následujících deskriptorů k určení typu souboru:
f:běžný soubord:adresářl:symbolický odkazc:znaková zařízeníb:blokovat zařízeníp:pojmenovaná roura (FIFO)s:zásuvka
Například pro nalezení všech adresářů v aktuálním pracovním adresáři byste použili:
find . -type d
Běžným příkladem je rekurzivní změna oprávnění souboru webu na 644 a oprávnění k adresáři 755 pomocí chmod příkaz:
find /var/www/my_website -type d -exec chmod 0755 {} \;find /var/www/my_website -type f -exec chmod 0644 {} \;
Najít soubory podle velikosti #
Chcete-li najít soubory podle velikosti souboru, předejte -size parametr spolu s kritérii velikosti. K určení velikosti souboru můžete použít následující přípony:
b:512bajtové bloky (výchozí)c:bajtůw:dvoubajtová slovak:kilobajtyM:MegabajtyG:Gigabajty
Následující příkaz najde všechny soubory přesně 1024 bajtů uvnitř /tmp adresář:
find /tmp -type f -size 1024c
find příkaz také umožňuje vyhledávat soubory, které jsou větší nebo menší než zadaná velikost.
V následujícím příkladu hledáme všechny soubory menší než 1MB uvnitř aktuálního pracovního adresáře. Všimněte si mínus - symbol před hodnotou velikosti:
find . -type f -size -1M
Pokud chcete hledat soubory o velikosti větší než 1MB , pak musíte použít plus + symbol:
find . -type f -size +1M
Můžete dokonce vyhledávat soubory v rozsahu velikostí. Následující příkaz najde všechny soubory mezi 1 a 2MB :
find . -type f -size +1M -size 21M Najít soubory podle data úpravy #
find příkaz může také vyhledávat soubory na základě jejich poslední úpravy, přístupu nebo času změny.
Stejně jako při vyhledávání podle velikosti použijte pro „větší než“ nebo „menší než“ symboly plus a mínus.
Řekněme, že jste před několika dny upravili jeden z konfiguračních souborů dovecot, ale zapomněli jste který. Všechny soubory můžete snadno filtrovat pod /etc/dovecot/conf.d adresář, který končí .conf a byl změněn za posledních pět dní:
find /etc/dovecot/conf.d -name "*.conf" -mtime 5
Zde je další příklad filtrování souborů na základě data modifikace pomocí -daystart volba. Níže uvedený příkaz zobrazí seznam všech souborů v /home adresář, který byl upraven 30 nebo před více dny:
find /home -mtime +30 -daystart Najít soubory podle oprávnění #
-perm umožňuje vyhledávat soubory na základě oprávnění k souboru.
Chcete-li například najít všechny soubory s oprávněními přesně 775 uvnitř /var/www/html adresář, byste použili:
find /var/www/html -perm 644
Číselný režim můžete předponovat mínus - nebo lomítko / .
Když lomítko / se používá jako předpona, pak alespoň jedna kategorie (uživatel, skupina nebo další) musí mít nastavené alespoň příslušné bity, aby se soubor shodoval.
Zvažte následující příklad příkazu:
find . -perm /444 Výše uvedený příkaz porovná všechny soubory s oprávněními ke čtení nastavenými pro uživatele, skupinu nebo ostatní.
Pokud je mínus - je použit jako prefix, pak aby se soubor shodoval, musí být nastaveny alespoň zadané bity. Následující příkaz vyhledá soubory, které mají oprávnění ke čtení a zápisu pro vlastníka a skupinu a jsou čitelné pro ostatní uživatele:
find . -perm -664 Najít soubory podle vlastníka #
Chcete-li najít soubory vlastněné konkrétním uživatelem nebo skupinou, použijte -user a -group možnosti.
Chcete-li například vyhledat všechny soubory a adresáře vlastněné uživatelem linuxize , spustíte:
find / -user linuxize
Zde je příklad ze skutečného světa. Řekněme, že chcete najít všechny soubory vlastněné uživatelem www-data a změnit vlastnictví odpovídajících souborů z www-data na nginx :
find / -user www-data -type f -exec chown nginx {} \; Najít a smazat soubory #
Chcete-li odstranit všechny odpovídající soubory, připojte -delete možnost na konec výrazu shody.
Ujistěte se, že tuto možnost používáte pouze v případě, že jste si jisti, že výsledek odpovídá souborům, které chcete odstranit. Vždy je dobré vytisknout odpovídající soubory před použitím -delete možnost.
Chcete-li například odstranit všechny soubory končící na .temp z /var/log/ , použili byste:
find /var/log/ -name `*.temp` -delete Použijte -delete možnost s extrémní opatrností. find příkaz je vyhodnocen jako výraz a pokud přidáte -delete Pokud zvolíte možnost první, příkaz odstraní vše pod vámi zadanými počátečními body.
Pokud jde o adresáře, find může smazat pouze prázdné adresáře, stejně jako rmdir .
Závěr č.
Ukázali jsme vám, jak používat find příkaz s různými možnostmi a kritérii.
Tento článek by vám měl poskytnout základní informace o tom, jak najít soubory ve vašich systémech Linux. Můžete také navštívit find manuálovou stránku a přečtěte si o všech dalších výkonných možnostech find příkaz.
Pokud máte nějaké dotazy nebo připomínky, zanechte prosím níže komentář.